首先我们看一下plt.scatter函数的参数:
plt.scatter()函数用于生成一个scatter散点图。
matplotlib.pyplot.scatter(x, y,
s=20,
c='b',
marker='o',
cmap=None,
norm=None,
vmin=None,
vmax=None,
alpha=None,
linewidths=None,
verts=None,
hold=None,
**kwargs)
参数:
x,y
:表示的是shape大小为(n,)的数组,也就是我们即将绘制散点图的数据点,输入数据。
s
:表示的是大小,是一个标量或者是一个shape大小为(n,)的数组,可选,默认20。
c
:表示的是色彩或颜色序列,可选,默认蓝色’b’。但是c不应该是一个单一的RGB数字,也不应该是一个RGBA的序列,因为不便区分。c可以是一个RGB或RGBA二维行数组。
marker
:MarkerStyle,表示的是标记的样式,可选,默认’o’。
cmap
:Colormap,标量或者是一个colormap的名字,cmap仅仅当c是一个浮点数数组的时候才使用。如果没有申明就是image.cmap,可选,默认None。
norm
:Normalize,数据亮度在0-1之间,也是只有c是一个浮点数的数组的时候才使用。如果没有申明,就是默认None。
vmin,vmax
:标量,当norm存在的时候忽略。用来进行亮度数据的归一化,可选,默认None。
alpha
:标量,0-1之间,可选,默认None。
linewidths
:也就是标记点的长度,默认None。
举例
from sklearn.datasets import make_classification
X, y = make_classification(n_samples=500,
n_features=10,
n_classes=5,
n_informative=4,
random_state=0)
# 默认绘图
import matplotlib.pyplot as plt
plt.figure(figsize=(8, 8))
plt.scatter(X[:, 0], X[:, 1], marker='o')
指定参数c:
plt.figure(figsize=(8, 8))
plt.scatter(X[:, 0], X[:, 1], marker='o', c='g')
参数c 可以等于:[‘c’, ‘b’, ‘g’, ‘r’, ‘m’, ‘y’, ‘k’, ‘w’]
b——blue
c——cyan
g——green
k——black
m——magenta
r——red
w——white
y——yellow
提出问题:
在机器学习的过程中,我们会遇到这样一个问题:
根据不同的数据标签来绘制出不同颜色的散点图;数据标签可以是监督学习中的y
,也可以是分类问题中的类别。此时,我们该如何实现呢?
我们先展示一下数据集的样子:
path='./SVM-Project/testSet.txt'
dataset=pd.read_table(path,names=['X1','X2','y'])
print(dataset)
X1 X2 y
0 3.542485 1.977398 -1
1 3.018896 2.556416 -1
2 7.551510 -1.580030 1
3 2.114999 -0.004466 -1
4 8.127113 1.274372 1
.. ... ... ..
95 2.609525 0.902979 -1
96 3.263585 1.367898 -1
97 2.912122 -0.202359 -1
98 1.731786 0.589096 -1
99 2.387003 1.573131 -1
[100 rows x 3 columns]
接下来我们绘制可视化图形:
内置的颜色图
plt.scatter(np.array(dataset['X1']),np.array(dataset['X2']),c=np.array(dataset['y']))
plt.show()
此时也可以自定义颜色,但是cmap
对应的颜色空间为:
按从A—Z—a—z顺序排列:
1)Accent, Blues, BrBG, BuGn, BuPu, CMRmap,
Dark2, GnBu, Greens, Greys, OrRd, Oranges,
PRGn, Paired, Pastel1, Pastel2, PiYG, PuBu,
PuBuGn, PuOr, PuRd, Purples, RdBu RdGy, RdPu,
RdYlBu, RdYlGn, Reds, Set1, Set2, Set3, Spectral,
Wistia, YlGn, YlGnBu, YlOrBr, YlOrRd
2)afmhot, autumn, binary, bone, brg bwr,
cividis, cool, coolwarm, copper, cubehelix,
flag, gist_earth, gist_gray, gist_heat,
gist_ncar gist_rainbow, gist_stern, gist_yarg,
gnuplot, gnuplot2, gray, hot, hsv, inferno,
jet, magma, nipy_spectral, ocean, pink, plasma,
prism, rainbow, seismic, spring, summer, tab10,
tab20, tab20b, tab20c, terrain, twilight,
twilight_shifted, viridis, winter
使用的时候要注意大小写
自定义颜色空间
mpl.colors.ListedColormap
ListedColormap定制的是离散型色板,颜色会根据色板列表循环。
plt.figure(figsize=(10,6))
cm=mpl.colors.ListedColormap(['g','r'])
plt.scatter(np.array(dataset['X1']),np.array(dataset['X2']),c=np.array(dataset['y']),cmap=cm)
plt.show()