类型错误:不可散列类型:'numpy.ndarray' 和 plt.scatter()

时间:2021-06-15 17:22:43

标签: python dataframe numpy csv scatter-plot

我遇到了 plt.scatter() 函数的问题。错误消息说'类型错误:不可散列类型:'numpy.ndarray''我希望此代码创建 x 和 y 数据帧的散点图。当我在代码中输入一个样本单元时,这两个数据帧的大小相同 (88,2)。

fig, ax = plt.subplots(figsize=(10,10))
plt.scatter(x,y, color='black') #this is where I am having an issue.   
plt.xlim([0,10])   
plt.ylim([0,10])   
plt.title(unit)

这是 csv 文件中的信息示例。 (第一列是数字,第二列是材料,第三列是数量,依此类推...)

     Material: Quantity: Unit: Date:
0    B         1         A     43455
1    B         1         A     43455
2    C         1         A     43455
3    C         1         A     43456
4    D         1         A     43455
5    D         1         A     43455
6    B         1         A     43455 
7    B         2         A     43455
8    B         8         A     43459
9    B         5         A     43467
10   B         3         A     43452
11   D         7         A     43451

1 个答案:

答案 0 :(得分:0)

基于 Matplotlib 文档 hereplt.scatter() 的输入是:

<块引用>

x, yfloat or array-like, shape (n, ) 数据位置。

但是在您的代码中,您传递给 scatter 函数的是两个 pd.DataFrame。所以第一列是名称,但第二列是存储值的位置:

fig, ax = plt.subplots(figsize=(10,10))
plt.scatter(x.values[:, 1], y.values[:, 1], color='black') #this is where I am having an issue.   
plt.xlim([0,10])   
plt.ylim([0,10])   
plt.title(unit)
plt.xlabel('X')
plt.ylabel('Y')

scatter2d