如何解决如何使用 Matplotlib 在图中添加多个直方图?
我正在使用 matplotlib 在一个图中成功绘制多个直方图:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(1)
for i in range(0,6):
data = np.random.normal(size=1000)
plt.hist(data,bins=30,alpha = 0.5)
plt.show()
但是,我希望使用 PdfPages 以 pdf 格式导出此图。我想在单独的页面中添加每个直方图,我成功地这样做了:
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages
np.random.seed(1)
fig = []
with PdfPages("exported_data.pdf") as pdf:
for i in range(0,6):
data = np.random.normal(size=1000)
fig.append(plt.hist(data,alpha = 0.5))
pdf.savefig(fig[i])
plt.close()
但我想要另一个第 7 页,所有的图都在一个图中,如上图所示。如何在同一个图中添加多个直方图(以便我可以在 pdf 页面中添加)?我看到很多关于如何在图形中绘制直方图网格的教程,但我还没有找到将一个图中的所有直方图添加到图形中的教程。
谢谢, 戳
解决方法
在运行循环以单独绘制它们(您的第二个代码片段)之后,您可以运行该循环以将所有直方图绘制在一起(您的第一个代码片段)。这是一个示例,其中随机数组在第一个循环期间保存在 datasets
列表中,以便能够在第二个循环中将它们绘制在一起。此解决方案使用 plt.gcf()
返回当前数字。
import numpy as np # v 1.19.2
import matplotlib.pyplot as plt # v 3.3.4
from matplotlib.backends.backend_pdf import PdfPages
np.random.seed(1)
datasets = []
with PdfPages("exported_data.pdf") as pdf:
# Plot each histogram,adding each figure to the pdf
for i in range(6):
datasets.append(np.random.normal(size=1000))
plt.hist(datasets[i],bins=30,alpha = 0.5)
pdf.savefig(plt.gcf())
plt.close()
# Plot histograms together using a loop then add the completed figure to the pdf
for data in datasets:
plt.hist(data,alpha = 0.5)
pdf.savefig(plt.gcf())
plt.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。