Python ValueError形状不匹配:无法将对象广播到单个形状
这是我计划用来创建条形图的代码。忽略下一行。我写这篇文章只是为了平衡代码和细节Python ValueError形状不匹配:无法将对象广播到单个形状,python,pandas,charts,syntax-error,data-visualization,Python,Pandas,Charts,Syntax Error,Data Visualization,这是我计划用来创建条形图的代码。忽略下一行。我写这篇文章只是为了平衡代码和细节 import numpy as np import pandas as pd import matplotlib.pyplot as plt def bar1(): df=pd.read_csv('C:\\Users\Bhuwan Bhatt\Desktop\IP PROJECT\Book1.csv',encoding= 'unicode_escape') x=np.arange(11) Co
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def bar1():
df=pd.read_csv('C:\\Users\Bhuwan Bhatt\Desktop\IP PROJECT\Book1.csv',encoding= 'unicode_escape')
x=np.arange(11)
Countries=df['Country']
STotalMed=df['SummerTotal']
WTotalMed=df['WinterTotal']
plt.bar(x-0.25,STotalMed,width=.2, label='Total Medals by Countries in Summer',color='g')
plt.bar(x+0.25,WTotalMed,width=.2, label='Total Medals by Countries in Winter',color='r')
plt.xticks(np.arange(11),Countries,rotation=30)
plt.title('Olympics Data Analysis of Top 10 Countries',color='red',fontsize=10)
plt.xlabel('Countries')
plt.ylabel('Total Medals')
plt.grid()
plt.legend()
plt.show()
bar1()
由于某种原因,我出现此错误:
Traceback (most recent call last):
File "C:/Users/Bhuwan Bhatt/Desktop/dsd.py", line 19, in <module>
bar1()
File "C:/Users/Bhuwan Bhatt/Desktop/dsd.py", line 10, in bar1
plt.bar(x-0.25,STotalMed,width=.2, label='Total Medals by Countries in Summer',color='g')
File "C:\Users\Bhuwan Bhatt\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\pyplot.py", line 2471, in bar
return gca().bar(
File "C:\Users\Bhuwan Bhatt\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\__init__.py", line 1438, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File "C:\Users\Bhuwan Bhatt\AppData\Local\Programs\Python\Python38-32\lib\site-packages\matplotlib\axes\_axes.py", line 2430, in bar
x, height, width, y, linewidth = np.broadcast_arrays(
File "<__array_function__ internals>", line 5, in broadcast_arrays
File "C:\Users\Bhuwan Bhatt\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\lib\stride_tricks.py", line 264, in broadcast_arrays
shape = _broadcast_shape(*args)
File "C:\Users\Bhuwan Bhatt\AppData\Local\Programs\Python\Python38-32\lib\site-packages\numpy\lib\stride_tricks.py", line 191, in _broadcast_shape
b = np.broadcast(*args[:32])
ValueError: shape mismatch: objects cannot be broadcast to a single shape
信息------->夏季部分:每个国家参加夏季活动的次数
冬季时间部分:每个国家参加冬季活动的次数TA仅需更改
x=np.arange(11)
to
x = np.arange(len(df))
及
很可能您的绘图向量的长度不同。请尝试输入x=np.arange(len(df))@Psidom输入x=np.arange(len(df))''值错误后显示新错误:FixedLocator位置(11)的数量(通常来自设置刻度的调用)与TickLabel(149)的数量不匹配。“
plt.xticks(np.arange(len(df)),国家/地区,轮换=30)
?@Psidom Thnks兄弟,它成功了。还有一件事我想问。csv大约有250行,所以我如何才能得到这段代码中的前10个国家的条形图(根据TotalCarners)。按TotalCarners的降序排序df
…比如…df.Sort_值(按='TotalCarners',升序=False,原地=True)
然后将df
过滤为df1=df.head(10)
…并在df1
x=np.arange(11)
to
x = np.arange(len(df))
plt.xticks(np.arange(11),Countries,rotation=30)
to
plt.xticks(x,Countries,rotation=30)