Matplotlib 记录

在这里记录一下平时使用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向下三角
^向上三角
<向左三角
>向右三角
1Tri_down
2Tri_up
3Tri_left
4Tri_right
s方形
p五边形
*星号
h六角形1
H六角形2
+加号
xX标记
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()

图像:

4.在图像中显示网格

plt.grid(True)

5.在图像中绘制一条线

b = 2 * np.sin(a) + 3* np.cos(a)

markers_a = [a[30], a[60]]
markers_b = [b[30], b[60]]
plt.figure()
plt.plot(a, b)
plt.plot(markers_a, markers_b, marker='*', markersize=10)
plt.grid(True)
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也就是标签,表示不同种类的鸢尾花,这里的数据就是随机打乱的,我们要在一张图中使用不同的颜色划分不同的数据点,所使用的方法就是上面所说的,效果如图:
在这里插入图片描述

8.对图表中的点进行标注

例如:

a = np.random.randint(1, 10, (5, 5))
pca = PCA(n_components=2)
res = pca.fit_transform(a)

x = res[:,0]
y = res[:,1]
texts = ['a', 'b', 'c', 'd', 'e']

plt.figure()
plt.scatter(x, y)
for i in range(5):
# 这里前两个值制定了坐标, 所加的值为偏移量,也就是控制标签的位置,最后也就是标签内容
    plt.text(x[i]+0.1, y[i]+0.1, texts[i])

plt.grid(True)
plt.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值