欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matplotlib画图:Chapter(2)

程序员文章站 2022-03-23 08:29:23
...

闲着无聊画了如下这张图

图例
Matplotlib画图:Chapter(2)
上图有几个重要的元素需要关注。首先,仔细观察这个“圆盘”可以发现,它其实是把一串字符串绕着圆心那个点形成的,那么要在figure中加入字符串,就需要用到plt.text()函数。其次,一般的figure是由周围四条黑线框起来的(叫做spines),现如今却只剩下两条了,而这两条的颜色和互相之间的交点也从(0,0)变成了图中的红点(4,4)。并且剩下的两条坐标轴上,原本应该存在的刻度也不见了。

源代码如下:

import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(4,4,s = 10,c = 'r')
for i in range(30):    
	ax.text(4,4,'****88888****88888',rotation = 0+360/30*i,ha='left',wrap = True)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',4))
ax.spines['left'].set_position(('data',4))
ax.spines['bottom'].set_color('g')
ax.spines['left'].set_color('g')
plt.xticks([])
plt.yticks([])
plt.savefig('./pic20191111_0_new')
plt.show()

分析:首先我们用scatter函数,先画了一个size为10,color为红色的点,坐标为(4,4)。ax.text()函数的作用是以(4,4)点为起点,在图中显示8888888888 字符串,rotation表示字符串这条“直线”与x轴的夹角,参数wrap必须为True,否则这30条字符串(for循环30次)并不会都以(4,4)为起点。
接下来,就是对figure周围那四条黑色边框(spines)的处理。这四条spines是按照上下左右的方式命名的,依此是’top’,‘bottom’,‘left’,‘right’。set_color(‘none’),顾名思义,就是把对应的这条spine“擦掉”。那么我们就只剩下’bottom’,'left’两条spines,那么就让它们依此作为x轴和y轴。ax.xaxis.set_ticks_position(‘bottom’)的意思就是让‘bottom’这条spine作为x轴(xaxis)。接下来,让’bottom’和’left’这两条spines在(4,4)点相交,也就是让x轴和y轴在(4,4)点相交。再然后,让’bottom’和‘left’两条spines的color设为‘g’ = green。
最后,至于如何让x轴,y轴的刻度消失,只要调用plt.xticks([]),实现的作用就是“x轴的刻度现在是一个空的列表”,从效果上来看就是刻度不见了。
以上。