首先我们看一下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()

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐