【问题标题】:Matplotlib fix y-axisMatplotlib 修复 y 轴
【发布时间】:2019-04-08 20:17:42
【问题描述】:

我正在尝试使用 matplotlib 创建水平条形图。我的数据点是以下两个数组

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]

我生成水平条形图的代码如下

plt.barh(distance, value, height=75)
plt.savefig(fig_name, dpi=300)
plt.close()

问题是我的图像是这样出来的

https://imgur.com/a/Q8dvHKR

有没有办法确保所有块的宽度相同,并跳过 500 到 300 之间的空格

【问题讨论】:

  • 多么奇怪,在 Python 2.7 中使用您的代码看起来像这样:imgur.com/4o1mVxM。断轴是一种痛苦,例如this问题/答案

标签: python-3.x matplotlib bar-chart


【解决方案1】:

您可以这样做,确保 Matplotlib 将您的标签视为标签,而不是数字。您可以通过将它们转换为字符串来做到这一点:

import matplotlib.pyplot as plt

distance = [100, 200, 300, 400, 500, 3000]
value = [10, 15, 50, 74, 95, 98]
distance = [str(number) for number in distance]
plt.barh(distance, value, height=0.75)

请注意,您必须更改高度。

【讨论】:

    【解决方案2】:

    或者,您可以使用一系列数字作为 y 值,使用 range() 函数来定位水平条,然后使用 plt.yticks() 函数根据需要设置刻度标签,该函数的第一个参数是蜱,第二个参数是蜱标签。

    import matplotlib.pyplot as plt
    
    distance = [100, 200, 300, 400, 500, 3000]
    value = [10, 15, 50, 74, 95, 98]
    plt.barh(range(len(distance)), value, height=0.6)
    plt.yticks(range(len(distance)), distance)
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 2022-12-21
      • 2021-01-14
      • 1970-01-01
      相关资源
      最近更新 更多