gpt4 book ai didi

python - 如何通过 x y 偏移叠加多个直方图

转载 作者:行者123 更新时间:2023-12-01 08:32:16 27 4
gpt4 key购买 nike

我正在尝试叠加多个直方图,并在 x y 轴上移动每个直方图。到目前为止,我正在生成单独的绘图并使用插画来设计最终的绘图,但是我想在我的脚本中完成所有操作。尝试了很长时间,没有成功。我准备了一个小文本案例。对于这个数据集来说没有多大意义,但对于我的数据来说这是一个非常好的解决方案。如果有人可以提供帮助,我会非常高兴。谢谢

这里是生成重叠直方图的示例代码。

import random
import numpy
import matplotlib.pyplot as plt
%matplotlib inline

data1 = [random.gauss(3,2) for _ in range(400)]
data2 = [random.gauss(4,2) for _ in range(400)]
data3 = [random.gauss(5,2) for _ in range(400)]

bins = numpy.linspace(-10, 10, 100)

plt.xlim(0, 10)
plt.ylim(0, 25)

plt.hist(data3, bins, label='data3')
plt.hist(data2, bins, label='data2')
plt.hist(data1, bins, label='data1')
plt.legend(loc='upper right')
plt.savefig("trial01.pdf", transparent=True)

Overlaid Histograms

但是我想要的数字与此类似

Expected Histogram Figure

最佳答案

您可能想要移动完整的轴及其内容。这需要在其自己的轴上绘制每个直方图、共享轴并设置相应的轴位置 (ax.set_position)。然后,您可以在需要时关闭蜱虫、刺和标签。

import random
import numpy
import matplotlib.pyplot as plt
from matplotlib.transforms import Bbox

data1 = [random.gauss(3,2) for _ in range(400)]
data2 = [random.gauss(4,2) for _ in range(400)]
data3 = [random.gauss(5,2) for _ in range(400)]

bins = numpy.linspace(-10, 10, 100)

fig, ax1 = plt.subplots()

ax2 = fig.add_subplot(111, sharex=ax1, sharey=ax1, label="ax2")
ax3 = fig.add_subplot(111, sharex=ax1, sharey=ax1, label="ax3")

ax1.set(xlim=(0, 10), ylim=(0, 25))

ax1.hist(data3, bins, label='data3', color="C2")
ax2.hist(data2, bins, label='data2', color="C1")
ax3.hist(data1, bins, label='data1', color="C0")
fig.legend(loc='upper right')


xshift=0.04; yshift=0.04
for i, ax in enumerate((ax3,ax2,ax1)):
ax.patch.set_visible(False)
pos = ax.get_position()
newpos = Bbox.from_bounds(pos.x0+i*xshift, pos.y0+i*yshift, pos.width, pos.height)
ax.set_position(newpos)
for sp in ["top", "right"]:
ax.spines[sp].set_visible(False)

if ax != ax3:
ax.spines["left"].set_visible(False)
ax.tick_params(labelleft=False, left=False, labelbottom=False)

fig.savefig("trial01.pdf", transparent=True)
plt.show()

enter image description here

关于python - 如何通过 x y 偏移叠加多个直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862330/

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