Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib.pyplot y标签的顺序错误_Python_Matplotlib_Itertools - Fatal编程技术网

Python matplotlib.pyplot y标签的顺序错误

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

我试图绘制一个条形图,我希望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
Bird=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