从子情节改变,小提琴情节停止工作?

问题描述

我想在这里制作一个像第一个子图一样的情节:

import matplotlib.pyplot as plt
import numpy as np

fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(9,4))

# generate some random test data
all_data = [np.random.normal(0,std,100) for std in range(6,10)]

# plot violin plot
axes[0].violinplot(all_data,showmeans=False,showmedians=True)
axes[0].set_title('violin plot')

代码有效,但我只想将第一个子图作为单独的图,因此我更改为 plt.figure 并删除与轴 [1] 相关的部分,但我无法再使用小提琴图! 我还尝试了使用 sns.violinplot 的单独绘图,但它旋转小提琴并将它们全部绘制在彼此之上。提示

解决方法

对于简单的单图,使用 matplotlib 的 M5.7.2<-matrix(sample(1:4,16,replace=TRUE),nrow=4,ncol=4) Q5.7.2<-function(X,rownum=FALSE){ if(rownum==TRUE) z <-(1:nrow(X))[apply(X == max(X),1,any)] x<-which(M5.7.2 == max(M5.7.2),arr.ind = TRUE) list(z,x,M5.7.2) } Q5.7.2(M5.7.2,TRUE) 接口通常比面向对象的接口更容易。有些函数在这些接口之间有不同的名称,例如pyplot 对应于 plt.title()

ax.set_title()
,

如果您使用 fig = plt.figure() 创建图形,您仍然需要使用 add_subplot() 在此图形中创建子图。您可以按如下方式执行此操作:

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(9,4))
axes = fig.add_subplot()

# generate some random test data
all_data = [np.random.normal(0,std,100) for std in range(6,10)]

# plot violin plot
axes.violinplot(all_data,showmeans=False,showmedians=True)
axes.set_title('violin plot')

这会产生下图:

violin plot in a single subplot

请注意,fig,axes = plt.subplots() 只是上面两行的简写,ncolsnrows 的默认值是 1,因此您可以简单地从您的原始代码,它也可以工作:

import matplotlib.pyplot as plt
import numpy as np

fig,axes = plt.subplots(figsize=(9,4))

# generate some random test data
all_data = [np.random.normal(0,showmedians=True)
axes.set_title('violin plot')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...