Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 ValueError:标签和X的尺寸必须兼容_Python_Matplotlib_Pycharm - Fatal编程技术网

Python ValueError:标签和X的尺寸必须兼容

Python ValueError:标签和X的尺寸必须兼容,python,matplotlib,pycharm,Python,Matplotlib,Pycharm,运行代码后,会发生以下情况: ValueError:标签和X的尺寸必须兼容 我不太明白上面的错误是什么 老实说,对python来说是一个新手,他引用了一个代码并按照它制作了一个箱线图,但遇到了一个错误,下面是我的代码: import numpy as np import matplotlib.pyplot as plt title = "Annual Bus Population" titlelen = len(title) print("{:*^{titlelen}}".format(ti

运行代码后,会发生以下情况:

ValueError:标签和X的尺寸必须兼容

我不太明白上面的错误是什么

老实说,对python来说是一个新手,他引用了一个代码并按照它制作了一个箱线图,但遇到了一个错误,下面是我的代码:

import numpy as np
import matplotlib.pyplot as plt


title = "Annual Bus Population"
titlelen = len(title)
print("{:*^{titlelen}}".format(title, titlelen=titlelen+6))
print()

filename = 'annual-bus-population-by-passenger-capacity.csv'
data = np.genfromtxt(filename, dtype=["i4", "U50", "i8"], delimiter=",", names=True)

#print("Original data: " + str(data.shape))

null_rows = np.isnan(data['number'])
nonnull_values = data[null_rows==False]
#print("Filtered data: " + str(nonnull_values.shape))

labels = list(set(data['capacity']))
capacities = np.arange(0,len(labels))
capacity_number = data[['capacity','number']]

numbers = capacity_number['number']

values_nine = numbers[capacity_number ['capacity'] == '<10']
values_fifteen = numbers[capacity_number['capacity'] == '10-15']
values_twenty = numbers[capacity_number['capacity'] == '16-20']
values_twentyfive = numbers[capacity_number['capacity'] == '21-25']
values_thirty= numbers[capacity_number ['capacity'] == '21-30']
values_thirtyfive = numbers[capacity_number ['capacity'] == '31-35']
values_fourty = numbers[capacity_number ['capacity'] == '36-40']
values_fourtyfive = numbers[capacity_number ['capacity'] == '40-45']
values_fifty = numbers[capacity_number ['capacity'] == '45-50']
values_fiftyfive = numbers[capacity_number ['capacity'] == '51-55']
values_sixty = numbers[capacity_number ['capacity'] == '56-60']
values_sixtyfive = numbers[capacity_number ['capacity'] == '61-65']
values_seventy = numbers[capacity_number ['capacity'] == '66-70']
values_moreseventy = numbers[capacity_number ['capacity'] == '>70']


values_total = [values_nine,values_fifteen,values_twenty,values_twentyfive,values_thirty,values_thirtyfive,values_fourty,values_fourtyfive,values_fifty,values_fiftyfive,values_sixty,values_sixtyfive,values_seventy,values_moreseventy]

#print(values_total.shape)
#print()

plt.figure(2, figsize=(30,30))
plt.title(title,fontsize=50)
plt.ylabel('Number of passengers',fontsize=40)
plt.yticks(fontsize=30)
plt.xticks(fontsize=30,rotation='vertical')
bp_dict = plt.boxplot(values_total,labels=labels,patch_artist=True)


## change outline color, fill color and linewidth of the boxes
for box in bp_dict['boxes']:
    # change outline color
    box.set( color='#7570b3', linewidth=2)
    # change fill color
    box.set( facecolor = '#1b9e77' )

## change color and linewidth of the whiskers
for whisker in bp_dict['whiskers']:
    whisker.set(color='#7570b3', linewidth=2)

## change color and linewidth of the caps
for cap in bp_dict['caps']:
    cap.set(color='#7570b3', linewidth=2)

## change color and linewidth of the medians
for median in bp_dict['medians']:
    median.set(color='#b2df8a', linewidth=2)

## change the style of fliers and their fill
for flier in bp_dict['fliers']:
    flier.set(marker='D', color='#e7298a', alpha=0.5)

print(bp_dict.keys())

for line in bp_dict['medians']:
    # get position data for median line
    x, y = line.get_xydata()[1] # top of median line
    # overlay median value
    plt.text(x, y, '%.1f' % y,
         horizontalalignment='center',fontsize=30) # draw above, centered

fliers = []
for line in bp_dict['fliers']:
    ndarray = line.get_xydata()
    if (len(ndarray)>0):
       max_flier = ndarray[:,1].max()
       max_flier_index = ndarray[:,1].argmax()
       x = ndarray[max_flier_index,0]
       print("Flier: " + str(x) + "," + str(max_flier))

       plt.text(x,max_flier,'%.1f' % max_flier,horizontalalignment='center',fontsize=30,color='green') 

plt.show()
将numpy导入为np
将matplotlib.pyplot作为plt导入
title=“年度公交车数量”
titlelen=len(标题)
打印(“{:*{titlelen}}”。格式(title,titlelen=titlelen+6))
打印()
文件名='按载客量划分的年度公交人口.csv'
data=np.genfromtxt(文件名,dtype=[“i4”,“U50”,“i8”],分隔符=,,names=True)
#打印(“原始数据:+str(data.shape))
null_rows=np.isnan(数据['number'])
非null_值=数据[null_行==False]
#打印(“过滤数据:+str(非空值.形状))
标签=列表(集合(数据['capacity']))
容量=np.arange(0,长度(标签))
容量\u编号=数据[[容量','编号]]
数字=容量\u数字['number']
数值九=数字[容量数['capacity']='70']
值\总计=[值\九、值\十五、值\二十、值\二十五、值\三十、值\三十五、值\四十、值\四十五、值\五十、值\五十五、值\六十、值\六十五、值\七十、值\七十]
#打印(值\总形状)
#打印()
plt.图(2,figsize=(30,30))
打印标题(标题,字体大小=50)
plt.ylabel(“乘客数量”,fontsize=40)
plt.yticks(fontsize=30)
plt.xticks(fontsize=30,旋转=垂直)
bp\u dict=plt.boxplot(值\u总计,标签=标签,补丁\u艺术家=真)
##更改框的轮廓颜色、填充颜色和线宽
对于bp_dict['box']中的方框:
#改变轮廓颜色
box.set(颜色='#7570b3',线宽=2)
#更改填充颜色
box.set(facecolor='#1b9e77')
##更改胡须的颜色和线宽
对于bp_dict[‘胡须’]中的胡须:
胡须设置(颜色='#7570b3',线宽=2)
##更改封口的颜色和线宽
对于bp_dict['caps']中的cap:
封顶设置(颜色='#7570b3',线宽=2)
##更改中间带的颜色和线宽
对于bp_dict中的中位数[‘中间值’]:
中值.set(颜色='#b2df8a',线宽=2)
##更改传单的样式及其填充
对于bp_dict[‘传单’]中的传单:
flier.set(marker='D',color='e7298a',alpha=0.5)
打印(bp_dict.keys())
对于bp_dict[‘中间值’]中的行:
#获取中线的位置数据
x、 y=直线。获取xydata()[1]#中线顶部
#叠加中值
plt.text(x,y,'%1f'%y,
水平对齐=中心,fontsize=30)#在上面画,居中
传单=[]
对于bp_dict[‘传单’]中的行:
ndarray=line.get_xydata()
如果(len(ndarray)>0:
max_flier=ndarray[:,1].max()
max\u flier\u index=ndarray[:,1].argmax()
x=ndarray[max\u flier\u index,0]
打印(“传单:+str(x)+”,“+str(max_传单))
plt.text(x,max_flier,%%.1f'%max_flier,horizontalalignment='center',fontsize=30,color='green')
plt.show()
错误在这一行:

bp\u dict=plt.boxplot(值\u总计,标签=标签,补丁\u艺术家=真)

数据集来自:

非常感谢您的帮助^^
谢谢

您的错误在
标签
变量中。具体来说,您在其中有额外的值,例如
15 Nov
。此外,当使用
set()
函数时,标签的顺序也会丢失,因此它们会以随机顺序出现。我不太确定今晚需要做什么来修复它,但您可以从调用
plt.boxplot()
中删除
labels
参数,以使某些功能正常工作。然后,您可以找出有效的标签

错误是试图说“数据的维度和标签的维度不匹配”


祝你好运

你好,达米安。这是一个很长的代码示例。要获得帮助,您需要说明错误发生在哪一行。最好只是粘贴您收到的带有错误的整个回溯文本。谢谢.bp_dict=plt.boxplot(值\u总计,标签=标签,补丁\u艺术家=真)这就是错误所在,抱歉!还有礼貌的一点是,数据集可以在网站上找到,很抱歉,现在就包括在内。非常感谢。