matplotlib 如何纠正我对次要情节的误解[重复]

qco9c6ql  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(103)

此问题已在此处有答案

Subplot for seaborn boxplot(3个答案)
Plotting two seaborn graphs in subplots(1个答案)
4天前关闭。
我似乎理解了Matplotlib中的subplots和ax选项是如何工作的,但我只是做了一个图形测试,结果并没有像预期的那样工作,这表明我仍然不太理解语句的语法。
方案如下;我应该得到2个单独的图,但只有1个,似乎覆盖了2个数据集。
[NOTE:代码必须使用sns.histplot; p1p2数据不对应于要呈现的数据的实际情况。]
你能给我解释一下我的打字错误是什么吗?

p1 = [7.86706728, 2.07023424, 8.59099644, 7.07850226, 9.79575806]
p2 = [1.48705512, 0.3142216 , 0.3407479 , 0.32947036, 0.32947036]

fig, ax = plt.subplots(1, 2, figsize = (8,3), tight_layout = True)

ax[0] = sns.histplot(data = None, x = p1, bins = 25, discrete = False, shrink = 1.0,
             stat = "probability", element = "bars", color = "green", kde = False) 

ax[0].set_title("p1", fontsize = '15')
ax[0].set_xlabel("p1" , fontsize = '15')
ax[0].set_ylabel("Probability", fontsize = '15')

ax[1] = sns.histplot(data = None, x = p2, bins = 25, discrete = False, shrink = 1.0,
             stat = "probability", element = "bars", color = "green", kde = False) 

ax[1].set_title("p2", fontsize = '15')
ax[1].set_xlabel("p2" , fontsize = '15')
ax[1].set_ylabel("Probability", fontsize = '15')

plt.show()

错误输出:

xmakbtuz

xmakbtuz1#

您的问题在于您使用海运直方图绘图的方式。从其文档(here)中,您可以提供一个预先存在的轴作为参数。如果不提供,seaborn将调用plt.gca()(获取当前轴)。由于您没有在代码中提供ax作为参数,所以sns.histplot()的两次调用都将调用plt.gca()。但是,当前轴是ax[1],因此它是两个直方图调用所选择的轴。
所以,你的第一个电话应该是:

sns.histplot(ax = ax[0], ...) # and the rest of the arguments

第二个:

sns.histplot(ax = ax[1], ... ) # and the rest of the arguments

相关问题