繁体   English   中英

ValueError 形状不匹配:对象不能广播到单个形状

[英]ValueError shape mismatch: objects cannot be broadcast to a single shape

这是我计划用于创建条形图的代码。忽略下一行。我写这个只是为了平衡代码和细节。

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

这是我一直在使用的 CSV 文件:

Country SummerTimesPart Sumgoldmedal    Sumsilvermedal  Sumbronzemedal  SummerTotal WinterTimesPart Wingoldmedal    Winsilvermedal  Winbronzemedal  WinterTotal TotalTimesPart  Tgoldmedal  Tsilvermedal    Tbronzemedal    TotalMedal
     Afghanistan    14  0   0   2   2   0   0   0   0   0   14  0   0   2   2
     Algeria    13  5   4   8   17  3   0   0   0   0   16  5   4   8   17
     Argentina  24  21  25  28  74  19  0   0   0   0   43  21  25  28  74
     Armenia    6   2   6   6   14  7   0   0   0   0   13  2   6   6   14
     Australasia    2   3   4   5   12  0   0   0   0   0   2   3   4   5   12
     Australia  26  147 163 187 497 19  5   5   5   15  45  152 168 192 512
     Austria    27  18  33  36  87  23  64  81  87  232 50  82  114 123 319
     Azerbaijan     6   7   11  24  42  6   0   0   0   0   12  7   11  24  42
     Bahamas    16  6   2   6   14  0   0   0   0   0   16  6   2   6   14
     Bahrain    9   2   1   0   3   0   0   0   0   0   9   2   1   0   3
     Barbados   12  0   0   1   1   0   0   0   0   0   12  0   0   1   1
     Belarus    6   12  27  39  78  7   8   5   5   18  13  20  32  44  96
     Belgium    26  40  53  55  148 21  1   2   3   6   47  41  55  58  154
     Bermuda    18  0   0   1   1   8   0   0   0   0   26  0   0   1   1
     Bohemia    3   0   1   3   4   0   0   0   0   0   3   0   1   3   4
     Botswana   10  0   1   0   1   0   0   0   0   0   10  0   1   0   1
     Brazil     22  30  36  63  129 8   0   0   0   0   30  30  36  63  129
     British WestIndies     1   0   0   2   2   0   0   0   0   0   1   0   0   2   2
     Bulgaria   20  51  87  80  218 20  1   2   3   6   40  52  89  83  224
     Burundi    6   1   1   0   2   0   0   0   0   0   6   1   1   0   2
     Cameroon   14  3   1   2   6   1   0   0   0   0   15  3   1   2   6
     Canada 26  64  102 136 302 23  73  64  62  199 49  137 166 198 501
     Chile  23  2   7   4   13  17  0   0   0   0   40  2   7   4   13
     China  10  224 167 155 546 11  13  28  21  62  21  237 195 176 608
     Colombia   19  5   9   14  28  2   0   0   0   0   21  5   9   14  28
     Costa Rica     15  1   1   2   4   6   0   0   0   0   21  1   1   2   4
     Ivory Coast    13  1   1   1   3   0   0   0   0   0   13  1   1   1   3
     Croatia    7   11  10  12  33  8   4   6   1   11  15  15  16  13  44
     Cuba   20  78  68  80  226 0   0   0   0   0   20  78  68  80  226


INFO-----> SummerTimesPart : 各国参加夏季的次数 WinterTimesPart : 各国参加冬季的次数

只是改变

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) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM