![](/img/trans.png)
[英]Matplotlib.pyplot - how to save a histogram in a variable for later access?
[英]Histogram by matplotlib.pyplot
我想创建直方图来比较总系统成本和批准的总激励。
x = np.arange(7)
y1 = ['Total System Costs']
y2 = ['Total Incentive Approved']
bar_width = 0.3
tick_label = ['2012', '2013', '2014', '2015', '2016', '2017', '2018']
plt.bar(x, y1, bar_width, color='salmon', label='Total System Costs')
plt.bar(x + bar_width, y2,bar_width, color='orchid', label='Total Incentive Approved')
plt.legend()
plt.xticks(x + bar_width / 2,tick_label)
plt.show()
我上面的编码有什么问题?
你的代码没问题。 问题是matplotlib不知道如何排列 y 轴,因为您的数据不是数字。 所以它将第一个“值”放在 0 处,第二个放在它上面(在 1 处)。 结果是y1 = ['Total System Costs']
显示一个高度为零的条形,您无法观察到它。
如果您在轴上调用ax.get_ylim()
( plt.gca().get_ylim()
在您的情况下,因为您没有显式打开轴句柄),您会注意到它返回类似
(0.0, 1.05)
如果y1
现在代表 0,它解释了为什么你看不到任何东西。
即使扩展 y 轴的限制(比如说plt.gca().set_ylim((-1,1.05))
)也无济于事,因为条形的高度仍然为零(从 0 到 0.. .)。
为了说明这个理论,我在代码中添加了一个带有新 y 值的单行代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(7)
y1 = ['Total System Costs']
y2 = ['Total Incentive Approved']
bar_width = 0.3
plt.bar(0,'zero',bar_width) # <<<<< additional bar plot
plt.bar(x, y1,bar_width, color='salmon', label='Total System Costs')
plt.bar(x + bar_width, y2,bar_width, color='orchid', label='Total Incentive Approved')
plt.legend()
# set tick labels
tick_label = ['2012', '2013', '2014', '2015', '2016', '2017', '2018']
plt.xticks(x + bar_width / 2,tick_label)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.