【问题标题】:Matplotlib skipping some values in the y axisMatplotlib 在 y 轴上跳过一些值
【发布时间】:2020-09-22 01:51:01
【问题描述】:

我编写了一个运行 matplotlib 并基于 2 个列表创建图形的 Python 代码,一个用于 x 轴,另一个用于 y 轴。

名单如下..

lst = ['interest', 'anticipation', 'submission', 'sadness', 'anger'] 
num = ['3', '2', '1', '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],我会丢失 4,6,7,8 ..这在某种程度上破坏了图表的目的..

有什么简单的方法可以修复这个代码吗?

我的python版本是3.7

【问题讨论】:

  • num 列表转换为数字,因为它们当前是字符串。 num = list(map(int, num))
  • 谢谢...我到底是怎么错过的??
  • 大脑需要更多的咖啡或更多的睡眠。

标签: python matplotlib graph python-3.7 yaxis


【解决方案1】:

你为什么将 num 定义为 strings 的列表? 更自然的解决方案是将其定义为 整数 列表。

lst = ['interest', 'anticipation', 'submission', 'sadness', 'anger']
num = [3, 2, 1, 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 == 1y 仅在整数值上打勾标签。

补充说明:文档声称第一个参数 plt.figure 可以是字符串,然后设置为标题,但至少 在我的情况下,这个标题还没有出现。

如果在您的环境中也是如此,请将相应的代码片段更改为:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 2020-07-22
    • 2016-10-08
    • 2020-12-08
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多