matplotlib.pyplot绘制了y-label的错误顺序

时间:2018-03-14 06:40:14

标签: python matplotlib itertools

我试图绘制条形图,我希望x-label保持特定顺序,所以我使用set_xticklabels。但是,结果结果是y值与x标签不匹配。

    import matplotlib.pyplot as plt
    A=['Dog','Cat','Fish','Bird']
    B=[26,39,10,20]
    fig=plt.figure()
    ax1 = fig.add_subplot(1,1,1)
    ax1.bar(A, B)
    ax1.set_xticklabels(A)
    plt.title("Animals")
    plt.show()

预期结果为Dog=26 Cat=39 Fish=10 Bird=20,但我得到的结果是Dog=20 Cat=39 Fish=26 { {1}}。

这是我找到的一个答案。但是,如果我使用这种方法,我就无法保持原来的订单。

Bird=20

有什么方法可以保持x-label的原始顺序并使y值与x匹配?

3 个答案:

答案 0 :(得分:1)

以下代码将用于此目的,

import numpy as np
import matplotlib.pyplot as plt

A=['Dog','Cat','Fish','Bird']

B=[26,39,10,20]

y_pos = np.arange(len(A))

plt.bar(y_pos, B)

plt.xticks(y_pos, A)

plt.title("Animals")

plt.show()

click here to view output

答案 1 :(得分:1)

为什么不使用pandas存储数据:

import pandas as pd
import matplotlib

A= ['Dog','Cat','Fish','Bird']
B= [26,39,10,20]
ser = pd.Series(index=A, values=B)

ax = ser.loc[A].plot(kind='bar', legend=False)
ax.set_ylabel("Value")
ax.set_xlabel("Animals")

plt.show()

答案 2 :(得分:0)

在matplotlib 2.2中,您可以按原样绘制这些列表并获得正确的结果。

import matplotlib.pyplot as plt
A=['Dog','Cat','Fish','Bird']
B=[26,39,10,20]

plt.bar(A, B)

plt.title("Animals")
plt.show()

enter image description here