ValueError:在plt.subplots()中绘制ax [i] .scatter时,x和y的大小必须相同

时间:2019-05-23 02:13:58

标签: python matplotlib

我尝试在scatter()中绘制每天的 tradeMoney
所以我只写一个简单的例子:

plt.scatter(train_EDA[(train_EDA['tradeMonth'] == 1)]['tradeDay'],\
            train_EDA[(train_EDA['tradeMonth'] == 1)]['tradeMoney'])

enter image description here

绝对正确。
因此,我尝试每月绘制以下内容:

nrows, ncols = 12, 1
fig, ax = plt.subplots(nrows=12, ncols=1, figsize=(8, 96))

for i in range(12):
    ax[i].scatter(train_EDA[(train_EDA['tradeMonth'] == i)]['tradeDay'], 
train_EDA[(train_EDA['tradeMonth'] == 1)]['tradeMoney'])

所有图都是空白的。
错误消息如下:

  

-------------------------------------------------- ----------------------------
ValueError Traceback(最近的呼叫   最后)在
        3
        i对于范围(12)中的4:
  ----> 5个ax [i] .scatter(train_EDA [(train_EDA ['tradeMonth'] == i)]
['tradeDay'],train_EDA [(train_EDA ['tradeMonth'] ==   1)] ['tradeMoney'])

     

〜\ Anaconda3 \ lib \ site-packages \ matplotlib__init __。py在内部(ax,   数据,* args,** kwargs)
1808年“ Matplotlib   list!)“%(label_namer,func。 name ),
1809
  RuntimeWarning,堆栈级别= 2)   
-> 1810 return func(ax,* args,** kwargs)
1811
1812内部。 doc = _add_data_doc(内部。 doc

     


〜\ Anaconda3 \ lib \ site-packages \ matplotlib \ axes_axes.py在   散点图(self,x,y,s,c,marker,cmap,norm,vmin,vmax,alpha,   线宽,verts,edgecolors,** kwargs)
4180 y =   np.ma.ravel(y)
4181,如果x.size!= y.size:   
-> 4182引发ValueError(“ x和y必须具有相同的大小”)
4183
4184如果s为None:

     


ValueError:x和y的大小必须相同

以下是数据框:

    tradeMonth  tradeDay    tradeMoney
0   12          22          16000.0
1   11          14          14000.0
2   2           10          6000.0
3   4           16          3400.0
4   2           28          8000.0
5   3           24          3000.0
......
......
......

搜索some relevant questions后,其错误主要是由数据尺寸引起的。
但是没有这样的问题。
谁能帮我解决这个问题?

1 个答案:

答案 0 :(得分:1)

好像您不小心将1留在了想要i的地方;更改

ax[i].scatter(train_EDA[(train_EDA['tradeMonth'] == i)]['tradeDay'], 
train_EDA[(train_EDA['tradeMonth'] == 1)]['tradeMoney'])

ax[i].scatter(train_EDA[(train_EDA['tradeMonth'] == i)]['tradeDay'], 
train_EDA[(train_EDA['tradeMonth'] == i)]['tradeMoney'])