在这里记录一下平时使用Matplotlib绘图的时候遇到的一些零散的知识点,以后在遇到类似的问题,就在这里找啦。
文章目录
1.Sactter函数格式
scatter(x, y, s=None, maker=None,
cmap=None, norm=None, wmin=None,
vmax=None, alpha=None, linewidth=None,
verts=None, edgecolors=None,
hold=None, data=None, **kwargs)
常用的参数的含义:
- x,y 要进行绘制的数据点、
- s 点的大小,也就是面积(默认20)
- c 点的颜色
- maker 点的形状
2.绘图 颜色、线、点的取值
颜色取值有
字符 | 颜色 |
---|---|
b | 蓝 |
g | 绿 |
r | 红 |
c | 青 |
m | 品红 |
y | 黄 |
k | 黑 |
w | 白 |
这些事简写的字母,其他的颜色可以直接写全称
线和点的样式取值有
字符 | 象征 |
---|---|
– | 实线 |
– | 短划线 |
-. | 点实线 |
: | 虚线 |
. | 点标记 |
’ | 像素标记 |
o | 圆标记 |
v | 向下三角 |
^ | 向上三角 |
< | 向左三角 |
> | 向右三角 |
1 | Tri_down |
2 | Tri_up |
3 | Tri_left |
4 | Tri_right |
s | 方形 |
p | 五边形 |
* | 星号 |
h | 六角形1 |
H | 六角形2 |
+ | 加号 |
x | X标记 |
D | 菱形 |
d | 细菱形 |
3.如何在图像中标注点
使用的是 annotate() 函数,例如:
x = np.linspace(-1, 5, 100)
y = x
plt.figure()
plt.plot(x, y)
for i in range(5):
plt.scatter(i, i)
plt.annotate('(%d, %d)' %(i, i),
xy=(i ,i), xycoords='data',
xytext=(0, 0), textcoords='offset points'
)
plt.show()
图像:
6.倾斜坐标轴的刻度值
主要是有些刻度值较长的时候,在刻度上显示不方便,所以将值倾斜,使用这个命令:
plt.xticks(rotation=45) # 参数是倾斜的度数
plt.yticks(rotation=45)
7.按照类别划分数据并会hi散点图
假设数据集中有两类数据,一类标签是1,另一类标签是-1,并且所有的数据是随机打乱的, 现在需要我们对数据按照标签划分,并绘制在散点图中。常见的情况是,我们对数据集进行了随机划分(训练集和测试集),这时候可以使用 np.where
来选中某一类条件的数据(注意,这个函数只对np.array有效,所以不要对list使用),并且这个函数返回的是一个索引数组,而且因为Numpy数组是支持直接将一个数组作为索引下标的,所以就可以很方便的将两类数据分开,具体例子来说:
x = np.array([[5.4, 3.4],
[5.8, 2.6],
[5., 2.3],
[5.1, 3.4],
[6.6, 2.9],
[4.9, 3.1],
[4.8, 3.4],
[4.6, 3.6],
[4.4, 3.2],
[5.1,3.3]])
y = np.array([-1, 1, 1, -1, 1, -1, -1, -1, -1, -1])
index1 = np.where(y == 1)
index2 = np.where(y != 1)
plt.figure()
plt.scatter(x[index1, 0], x[index1, 1], label='1')
plt.scatter(x[index2, 0], x[index2, 1], label='0')
plt.legend()
plt.grid(True)
plt.show()
这里的数据是随机从 Iris 数据集中取得的,使用的特征是前两个特征,y也就是标签,表示不同种类的鸢尾花,这里的数据就是随机打乱的,我们要在一张图中使用不同的颜色划分不同的数据点,所使用的方法就是上面所说的,效果如图:
赞 (0)