gpt4 book ai didi

python - 如何在包含多个 matplotlib 直方图的一个图中设置 x 轴的边界并仅创建一列图表?

转载 作者:太空宇宙 更新时间:2023-11-03 13:17:48 33 4
gpt4 key购买 nike

我正在努力为每个直方图设置 xlim 并创建 1 列图表,以便对齐 x 轴刻度。作为新 Pandas ,我不确定如何应用答案适用:Overlaying multiple histograms using pandas .

>import from pandas import DataFrame, read_csv
>import matplotlib.pyplot as plt
>import pandas as pd

>df=DataFrame({'score0':[0.047771,0.044174,0.044169,0.042892,0.036862,0.036684,0.036451,0.035530,0.034657,0.033666],
'score1':[0.061010,0.054999,0.048395,0.048327,0.047784,0.047387,0.045950,0.045707,0.043294,0.042243]})

>print df
score0 score1
0 0.047771 0.061010
1 0.044174 0.054999
2 0.044169 0.048395
3 0.042892 0.048327
4 0.036862 0.047784
5 0.036684 0.047387
6 0.036451 0.045950
7 0.035530 0.045707
8 0.034657 0.043294
9 0.033666 0.042243

>df.hist()
>plt.xlim(-1.0,1.0)

结果仅将 x 轴上的边界之一设置为 [-1,1]。

我非常熟悉 R 中的 ggplot 并且只是在 python 中试用 pandas/matplotlib。我愿意接受有关更好地策划想法的建议。任何帮助将不胜感激。

enter image description here

更新 #1 (@ct-zhu):

我尝试了以下操作,但子图上的 xlim 编辑似乎没有将 bin 宽度转换为新的 x 轴值。因此,该图现在具有奇数 bin 宽度并且仍然具有多于一列的图:

for array in df.hist(bins=10):
for subplot in array:
subplot.set_xlim((-1,1))

enter image description here

更新#2:

使用 layout 越来越近,但是 bin 的宽度不等于间隔长度除以 bin 计数。在下面的示例中,我设置了 bins=10。因此,[-1,1] 区间内每个 bin 的宽度应为 2/10=0.20;然而,该图没有任何宽度为 0.20 的 bin。

for array in df.hist(layout=(2,1),bins=10):
for subplot in array:
subplot.set_xlim((-1,1))

enter image description here

最佳答案

有两个子图,您可以访问每个子图并分别修改它们:

ax_list=df.hist()
ax_list[0][0].set_xlim((0,1))
ax_list[0][1].set_xlim((0.01, 0.07))

enter image description here

plt.xlim 所做的操作仅更改当前工作轴的限制。在本例中,第二个图是最近生成的。


编辑:

要将绘图分成 2 行 1 列,请使用 layout 参数。要使 bin 边缘对齐,请使用 bins 参数。将 x 限制设置为 (-1, 1) 可能不是一个好主意,你们的数字都很小。

ax_list=df.hist(layout=(2,1),bins=np.histogram(df.values.ravel())[1])
ax_list[0][0].set_xlim((0.01, 0.07))
ax_list[1][0].set_xlim((0.01, 0.07))

enter image description here

或者在 (-1,1) 之间指定 10 个 bin:

ax_list=df.hist(layout=(2,1),bins=np.linspace(-1,1,10))
ax_list[0][0].set_xlim((-1,1))
ax_list[1][0].set_xlim((-1,1))

enter image description here

关于python - 如何在包含多个 matplotlib 直方图的一个图中设置 x 轴的边界并仅创建一列图表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23983642/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com