Matplotlib跳过y轴上的某些值

问题描述

我编写了一个运行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()

输出以下图形:

Click to see the graph

如果您看到该图,则它在开始时丢失了一个零,不仅丢失了零,而且在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()

我得到了以下图片:

enter image description here

请注意,我添加了 MultipleLocator (默认值为 base == 1 ), y 刻度标签仅适用于整数值。

附加说明:文档声称 plt.figure 可以是一个字符串,然后将其设置为标题,但至少 就我而言,这个标题还没有出现。

如果您的环境相同,请将相应的代码片段更改为:

ax = fig.gca()
ax.yaxis.set_major_locator(tck.MultipleLocator()))
ax.set_title("Top_5_keyword_Group")