matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, data=None, **kwargs)
x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
s:是一个实数或者是一个数组大小为(n,),这个是一个可选的参数。
c:表示的是颜色,也是一个可选项。默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等。但是c不可以是一个单独的RGB数字,也不可以是一个RGBA的序列。可以是他们的2维数组(只有一行)。
marker:表示的是标记的样式,默认的是'o'。
cmap:Colormap实体或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap
norm:Normalize实体来将数据亮度转化到0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认为colors.Normalize。
vmin:vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化。
alpha:实数,0-1之间。
linewidths:也就是标记点的长度。
现在我们有一个ex0.txt文件,部分数据如下:
1.000000 0.067732 3.176513 1.000000 0.427810 3.816464 1.000000 0.995731 4.550095 1.000000 0.738336 4.256571 1.000000 0.981083 4.560815 1.000000 0.526171 3.929515 1.000000 0.378887 3.526170 1.000000 0.033859 3.156393 1.000000 0.132791 3.110301 1.000000 0.138306 3.149813
我们先编写一个函数用于读取数据:
from numpy import * import numpy as np def loadDataSet(fileName): #general function to parse tab -delimited floats numFeat = len(open(fileName).readline().split('\t')) - 1 #get number of fields dataMat = [] labelMat = [] fr = open(fileName) for line in fr.readlines(): curLine = line.strip().split('\t') for i in range(1,numFeat): dataMat.append(float(curLine[i])) labelMat.append(float(curLine[-1])) return dataMat,labelMat xArr,yArr=loadDataSet("ex0.txt")
然后我们就可以开始绘制散点图了。
1、一般绘制方式:
import matplotlib.pyplot as plt plt.scatter(xArr,yArr) plt.show()
2、设置散点的大小
plt.scatter(x, y, s)
通过修改s的值即可,比如设置为5。
3、更改散点的颜色
plt.scatter(x, y, s, 'r')
4、更改散点的样式
5、为不同数据设置不同样式
length=len(yArr)//2 import matplotlib.pyplot as plt plt.scatter(xArr[:length],yArr[:length],5,'r','^') plt.scatter(xArr[length:],yArr[length:],5,'b',marker='o') plt.show()
6、设置图例
import matplotlib.pyplot as plt plt.scatter(xArr[:length],yArr[:length],5,'r','^',label='triangle') plt.scatter(xArr[length:],yArr[length:],5,'b',marker='o',label='circle') plt.legend(loc='best') plt.show()