我试图绘制条形图,我希望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匹配?
答案 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()
答案 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)