matplotlib条的顺序不正确

时间:2017-12-13 10:03:14

标签: python matplotlib

我有一个条形图,其中y轴是从1月到12月的月份列表,x轴值按相应的顺序存储在另一个列表中。 当我绘制图表时,月份的顺序会混淆。

In:  

fig, ((ax1, ax2)) = plt.subplots(nrows=1, ncols=2, figsize=(10,5), sharex='row')

fig.suptitle("Income from members and supporters", fontsize=14)

ax1.barh(months, tag_max)
ax1.set_facecolor('white')
ax1.set_title("Maximum income from members")

ax2.barh(months, tam_max)
ax2.set_facecolor('white')
ax2.get_yaxis().set_visible(False)
ax2.set_title('Maximum income from supporters')

输出:

enter image description here

In:

    months

Out:

    ['January',
     'February',
     'March',
     'April',
     'May',
     'June',
     'July',
     'August',
     'September',
     'October',
     'November',
     'December']

可能是什么原因以及如何解决? 谢谢!

1 个答案:

答案 0 :(得分:1)

DavidG的评论是正确的。您可以通过使用条形位置的数值来解决问题 将月份指定为yticklabels

from matplotlib import pyplot as plt
import numpy as np

months = [
    'January',
    'February',
    'March',
    'April',
    'May',
    'June',
    'July',
    'August',
    'September',
    'October',
    'November',
    'December'
]

tag_max = np.random.rand(len(months))
tam_max = np.random.rand(len(months))

yticks = [i for i in range(len(months))]

fig, ((ax1, ax2)) = plt.subplots(nrows=1, ncols=2, figsize=(10,5), sharex='row')

fig.suptitle("Income from members and supporters", fontsize=14)

ax1.barh(yticks, tag_max)
ax1.set_facecolor('white')
ax1.set_title("Maximum income from members")
ax1.set_yticks(yticks)
ax1.set_yticklabels(months)


ax2.barh(yticks, tam_max)
ax2.set_facecolor('white')
ax2.get_yaxis().set_visible(False)
ax2.set_title('Maximum income from supporters')

plt.show()

这给出了以下输出:

result of the given code