使用plot以及scatter来绘制散点图,同时改变点的大小

参考链接:https://blog.csdn.net/Poul_henry/article/details/88602806

plot()

根据关于matplotlip.pyplot的官方文档:pyplot,其plot部分的解释plot()的作用是画出线条和线条上的标记:

大致意思就是:

将线条和/或标记绘制到轴上。args 是一个可变长度参数,允许使用可选格式字符串进行多个 x、y 对。例如,以下每一项都是合法的:

1

根据pyplot的官方教学文档:Pyplot tutorial,如果不改变其默认设置,画出的是蓝色的线条,即"b-":

大致意思就是:

对于每 x、 y 对参数,都有一个可选的第三个参数,即指示绘图的颜色和线类型的格式字符串。格式字符串的字母和符号来自 MATLAB,您用线条样式字符串连接颜色字符串。默认格式字符串为’b-',这是一条实心蓝线。例如,要用红色圆圈绘制上述内容,请发布

2

代码示例:

1
2
3
4
5
6
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,1)
plt.plot(x,x+0)
plt.show()

画出的效果为一条蓝色的直线:

3

1
plt.plot(x,x+0)

等价于

1
plt.plot(x,x+0,'-')

而可以看到,[x, x+0]表示的是一个二维数组,每一维是从0到9这10个整数,或者说10个点。plot()的作用就是用某种方式将这10个点建立连接,不过其默认方式使用线条连接(也就是线的类型为’-')。现考虑如果是用点或圈而不是线条的方式将这10个点连接起来,画出的就是散点图。

pyplot可以查到,控制线条的种类的字符串可以为’', ‘-.’, ‘:’, '.'等等:

4

故现在考虑用’.‘或’o’代替’-'连接这些点。

将’o’代替’-'的示例:

1
2
3
4
5
6
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,1)#生成原始数据
plt.plot(x,x+0,'o')#这里重新指定了线的类型
plt.show()

画出的效果是10个散点图:

img

scatter()

根据官方文档:matplotlib.pyplot.scatter的定义,scatter()是用来画散点图的:

5

和plot()相同,scatter()的作用也是将画出的点连接起来,不过其默认连接方式是’o’,即点的方式:

6

示例:

1
2
3
4
5
6
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,1)
plt.scatter(x,x+0)
plt.show()
1
plt.scatter(x,x+0)

效果和

1
plt.plot(x,x+0,'o')

的效果相同:

7

plot()和scatter()改变点的大小

plot()中改变点的大小的参数是markersize 或 ms:

8

而scatter()中改变点的大小的参数是s:

9

示例:

1
2
3
4
5
6
7
8
import numpy as np
import matplotlib.pyplot as plt


x = np.arange(0,10,1)
plt.plot(x,x+0,'o',markersize=4.,color=(0.8,0.,0.))#改变点的大小
plt.scatter(x,x+1,s=16.,color=(0.,0.5,0.))
plt.show()

效果:

10

可以看到,plot()的markersize设为4.0,和scatter()的s设为16.0,画出的点大小相同。

这里matplotlib.pyplot.scatter有解释, scatter()中参数s表示的大小,和plot()的markersize大小的平方相同,即[s]=markersize**2,下图参考:pyplot scatter plot marker size

11

加入图例(legend)后图例中点的大小和数量

加入图例(legend)后,根据官方参考文档:matplotlib.pyplot.legend

参数markerscale是用于调整legend中点和实际图中画出的点的大小关系,若设markersize=1.0,则legend中的点的大小和图中画出的点大小相同;若设markersize=2.0,则legend中的点的大小是图中画出点的大小的2倍。

12

numpoints参数作用于调整用线条画出的点,即用plot()画出的点,legend中的点的数目,而scatterpoints参数作用于调整用散点图画出的点,即scatter()画出的点,legend中的点的数目:

13

markerscale,numpoints和scatterpoints3个参数默认值都为1。

下面加入图例,更改plot()画出的点在legend中点的数量为2,且legend中点的大小为原图的2倍:

1
2
3
4
5
6
7
8
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,1)
plt.plot(x,x+0,'o',label='x+0',markersize=4.,color=(0.8,0.,0.))
plt.scatter(x,x+1,label='x+1',marker='o',s=16.0,color=(0.,0.5,0.))
plt.legend(loc="best",markerscale=2.,numpoints=2,scatterpoints=1,fontsize=12)#指定plot的图例有两个点,且为原图中的2倍
plt.show()

效果为:

14

更改scatterpoints大小也为2, 即scatter()画出的点在legend中显示数量为2:

1
2
3
4
5
6
7
8
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0,10,1)
plt.plot(x,x+0,'o',label='x+0',markersize=4.,color=(0.8,0.,0.))
plt.scatter(x,x+1,label='x+1',marker='o',s=16.0,color=(0.,0.5,0.))
plt.legend(loc="best",markerscale=2.,numpoints=2,scatterpoints=2,fontsize=12)#plot和scatter的点均为2个且同时为原图中的2倍
plt.show()

效果为:

15

其它参数未变。


使用plot以及scatter来绘制散点图,同时改变点的大小
https://fulequn.github.io/2020/09/Article202009243/
作者
Fulequn
发布于
2020年9月24日
许可协议