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)