Python matplotlib.pyplot y标签的顺序错误
我试图绘制一个条形图,我希望x-label保持特定的顺序,因此我使用Python matplotlib.pyplot y标签的顺序错误,python,matplotlib,itertools,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") p
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=26Bird=20
我找到了一个答案。但是,如果我使用这种方法,我无法保持我想要的原始顺序
import itertools
import matplotlib.pyplot as plt
A=['Dog','Cat','Fish','Bird']
B=[26,39,10,20]
lists = sorted(itertools.izip(*[A, B]))
new_x, new_y = list(itertools.izip(*lists))
fig=plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.bar(new_x, new_y )
ax1.set_xticklabels(new_x)
plt.title("Animals")
plt.show()
有什么方法可以保持x-label的原始顺序并使y值与x匹配吗?此代码将用于此目的
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()
此代码将用于此目的
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()
为什么不使用熊猫来存储数据:
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()
为什么不使用熊猫来存储数据:
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()
在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()
在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()
您是否遇到编译错误?我试着用PythonAnywhere运行这个,但是我得到了错误。可能是在我这边…是的。。。我得到以下信息:
TypeError:无法连接'str'和'float'对象
。是吗?@LeviMuniz它在我的电脑上运行得很好。我不知道为什么会这样。你用的是哪一种,python2还是python3?我用的是python2,我试试3你有没有编译错误?我试着用PythonAnywhere运行这个,但是我得到了错误。可能是在我这边…是的。。。我得到以下信息:TypeError:无法连接'str'和'float'对象
。是吗?@LeviMuniz它在我的电脑上运行得很好。我不知道为什么会这样。你用哪一种,python2还是python3?我用python2,我试试3