鱼C论坛

 找回密码
 立即注册
查看: 7920|回复: 5

matplotlib中函数scatter()参数c和s设置问题

[复制链接]
发表于 2017-10-31 10:25:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
求教鱼油们~以下代码问题部分用背景颜色标出,这句代码我有两个疑问:1:array是什么,哪里的array?2:matplotlib文档关于scatter()的c和s的部分看不懂,官方解释如下:s:scalar或array_like,shape(n),可选大小在点^ 2。默认是rcParams ['lines.markersize'] ** 2。
c:颜色,序列或颜色序列,可选,默认值:'b'。c可以是单色格式字符串,或长度为N的颜色规范序列,或使用通过kwargs指定的cmap和norm来映射到颜色的N个序列序列(见下文)。请注意,c不应该是单个数字RGB或RGBA序列,因为它与要映射的值的数组不可区分。 c可以是其中行是RGB或RGBA的2-D数组,然而,包括单行的情况来指定所有点的相同颜色。
cmap:颜色,可选,默认值:无
颜色映射实例或注册名称。仅当c是浮点数组时才使用cmap。如果没有,默认为rc image.cmap。规范:规范化,可选,默认值:无
规范化实例用于将亮度数据缩放为0,1.仅在c是浮点数组时使用norm。如果没有,请使用默认的normalize()。
机器学习实战第二章代码关于scatter()参数c和s设置为数组问题,代码如下:
#处理输入文件格式
def file2Matrix(filename):
   fr=open(filename)
   arrayOLines=fr.readlines()
   numberOfLines=len(arrayOLines)
   returnMat=zeros((numberOfLines,3))#生成一个numberOfLines行,3列的用0填充的矩阵
   classLabelVector=[]
   index=0
   for line in arrayOLines:
       line = line.strip()  # 将头尾空格及位于头尾的\n,\t之类的删掉
       listFromLine = line.split("\t")
       returnMat[index, :] = listFromLine[0:3]
       #classLabelVector.append(listFromLine[-1]) # 将listFromLine最后一列(-1)以整型存储到向量classLabelVector中
       index += 1
   for line in arrayOLines:
       line = line.strip()  # 将头尾空格及位于头尾的\n,\t之类的删掉
       listFromLine = line.split("\t")
       #print(listFromLine[3:4])
       if(listFromLine[3:4].__eq__('largeDoses')):#不能用==判别字符串是否相等,listFromLine[3:4]得到一个列表
           classLabelVector.append(3)
       if(listFromLine[3:4].__eq__("smallDoses")):
           classLabelVector.append(2)
       if(listFromLine[3:4].__eq__("didntLike")):
           classLabelVector.append(1)
       index+=1
   return returnMat,classLabelVector
测试的画图程序:
datingDataMat,datingLabels=kNN.file2Matrix("C:/Users/MAYue/Desktop/datingTestSet.txt")
print(datingDataMat)
print(datingLabels[0:20])

fig = plt.figure()
ax=fig.add_subplot(1,1,1)
plt.ylabel("每周消费的冰淇淋公升数")
plt.xlabel("玩视频游戏所耗时间百分比")
ax.scatter(datingDataMat[:,1],datingDataMat[:,2],
           15.0*array(datingLabels),15.0*array(datingLabels))

plt.show()
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-31 12:11:26 | 显示全部楼层
散点图,分为普通散点图,和气泡图,既然是散点图,他就可以接受x和y的坐标,在python中可以用array传入,也可以别的,气泡图的话就是多了一个参数,这个参数是可选的,不写的话就是所有点大小一样,也是用array传入,array每个数字代表了散点的大小,颜色的话就是代表颜色,各种颜色的表示就不说了

s = size
c = color
cmap = colors
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 12:25:06 | 显示全部楼层
小锟 发表于 2017-10-31 12:11
散点图,分为普通散点图,和气泡图,既然是散点图,他就可以接受x和y的坐标,在python中可以用array传入, ...

我用PYthon3运行程序,黄色部分会报错~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-31 17:14:24 | 显示全部楼层
Phoebe_Ma 发表于 2017-10-31 12:25
我用PYthon3运行程序,黄色部分会报错~

那你应该再贴个报错的详细信息
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-31 18:30:30 | 显示全部楼层
小锟 发表于 2017-10-31 17:14
那你应该再贴个报错的详细信息

恩恩,有这么多~都没看懂
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-packages\matplotlib\colors.py", line 141, in to_rgba
    rgba = _colors_full_map.cache[c, alpha]
KeyError: (45.0, None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:/M/K.py", line 18, in <module>
    15.0*numpy.array(datingLabels),15.0*numpy.array(datingLabels))
  File "C:\Anaconda3\lib\site-packages\matplotlib\__init__.py", line 1897, in inner
    return func(ax, *args, **kwargs)
  File "C:\Anaconda3\lib\site-packages\matplotlib\axes\_axes.py", line 4034, in scatter
    alpha=alpha
  File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 902, in __init__
    Collection.__init__(self, **kwargs)
  File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 140, in __init__
    self.set_facecolor(facecolors)
  File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 681, in set_facecolor
    self._set_facecolor(c)
  File "C:\Anaconda3\lib\site-packages\matplotlib\collections.py", line 666, in _set_facecolor
    self._facecolors = mcolors.to_rgba_array(c, self._alpha)
  File "C:\Anaconda3\lib\site-packages\matplotlib\colors.py", line 239, in to_rgba_array
    result[i] = to_rgba(cc, alpha)
  File "C:\Anaconda3\lib\site-packages\matplotlib\colors.py", line 143, in to_rgba
    rgba = _to_rgba_no_colorcycle(c, alpha)
  File "C:\Anaconda3\lib\site-packages\matplotlib\colors.py", line 194, in _to_rgba_no_colorcycle
    raise ValueError("Invalid RGBA argument: {!r}".format(orig_c))
ValueError: Invalid RGBA argument: 45.0
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-11-1 13:20:11 | 显示全部楼层
本帖最后由 小锟 于 2017-11-1 13:28 编辑
Phoebe_Ma 发表于 2017-10-31 18:30
恩恩,有这么多~都没看懂
Traceback (most recent call last):
  File "C:\Anaconda3\lib\site-package ...


应该是第四个参数,颜色出问题了,你可以把第四个参数先去掉,然后看看结果,能否运行,然后再用别的颜色带进去,
最好把这四个参数都输出来看看,也有可能是数据格式的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-25 15:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表