问题描述
我编写了一个运行matplotlib的python代码,并基于2个列表创建了一个图形,其中一个用于x轴,另一个用于y。.
列表如下。
lst = ['interest','anticipation','submission','sadness','anger']
num = ['3','2','1','1']
现在,当我运行以下代码
plt.figure("Top_5_keyword_Group")
plt.bar(revLst(lst),revLst(num),color="green")
plt.pause(0.05)
time.sleep(2)
plt.show()
它输出以下图形:
如果您看到该图,则它在开始时丢失了一个零,不仅丢失了零,而且在y轴列表中缺少的其他任何值(例如列表为[1,3,5,9,2]
),我都将拥有{{ 1}}丢失了,这在某种程度上破坏了图形的目标。
我的python版本是3.7
解决方法
为什么将 num 定义为字符串的列表? 一种更自然的解决方案是将其定义为 integers 的列表。
lst = ['interest','anticipation','submission','sadness','anger']
num = [3,2,1,1]
然后运行:
import matplotlib.ticker as tck
plt.figure("Top_5_keyword_Group")
plt.bar(lst[::-1],num[::-1],color="green")
plt.gca().yaxis.set_major_locator(tck.MultipleLocator())
plt.show()
我得到了以下图片:
请注意,我添加了 MultipleLocator (默认值为 base == 1 ), y 刻度标签仅适用于整数值。
附加说明:文档声称 plt.figure 可以是一个字符串,然后将其设置为标题,但至少 就我而言,这个标题还没有出现。
如果您的环境相同,请将相应的代码片段更改为:
ax = fig.gca()
ax.yaxis.set_major_locator(tck.MultipleLocator()))
ax.set_title("Top_5_keyword_Group")