matplotlob绘制散点图
在matplotlib中使用函数 matplotlib.pyplot.scatter 绘制散点图,matplotlib.pyplot.scatter的函数签名如下:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, hold=None, data=None, **kwargs)
常用参数有:x,y组成了散点的坐标;s为散点的面积;c为散点的颜色(默认为蓝色'b');marker为散点的标记;alpha为散点的透明度(0与1之间的数,0为完全透明,1为完全不透明);linewidths为散点边缘的线宽;如果marker为None,则使用verts的值构建散点标记;edgecolors为散点边缘颜色。
下面为常见的用法:
1、绘制普通散点图
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
plt.scatter(x,y)
plt.show()
输出:
2、更改散点的大小
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
# 散点随机大小
size = (30*np.random.rand(N)**2)
plt.scatter(x, y, s=size)
plt.savefig('2.png')
plt.show()
输出:
3、更改散点颜色和透明度
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
size = (30*np.random.rand(N)**2)
# 随机颜色
color = np.random.rand(N)
plt.scatter(x, y, s=size, c= color, alpha=0.3)
plt.savefig('3.png')
plt.show()
输出:
4、更改散点形状
import matplotlib.pyplot as plt
import numpy as np
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
size = (400*np.random.rand(N)**2)
color = np.random.rand(N)
plt.scatter(x, y, s=size, c=color, marker='^', alpha=0.2)
plt.savefig('4.png')
plt.show()
输出:
所有可用的形状可以参考matplotlib.markers。
5、在一张图上绘制两组数据的散点
import matplotlib.pyplot as plt
import numpy as np
N = 10
x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
plt.scatter(x1, y1, marker='o')
plt.scatter(x2, y2, marker='^')
plt.savefig('5.png')
plt.show()
输出:
6、为散点设置图例
import matplotlib.pyplot as plt
import numpy as np
N = 10
x1 = np.random.rand(N)
y1 = np.random.rand(N)
x2 = np.random.rand(N)
y2 = np.random.rand(N)
plt.scatter(x1, y1, marker='o', label="circle")
plt.scatter(x2, y2, marker='^', label="triangle")
plt.legend(loc='best')
plt.savefig('6.png')
plt.show()
输出:
7、练习
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.font_manager
# 设置全局中文
font = {
'family': 'KaiTi',
'weight': 'bold',
'size': '12'
}
plt.rc('font', **font)
y_3 = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21, 22, 22,
22, 23]
y_10 = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11, 13,
12, 13, 6]
x_3 = np.arange(1, 32)
x_10 = np.arange(51, 82)
# 设置图形大小
plt.figure(figsize=(20, 8), dpi=80)
# 使用scatter绘制散点图
plt.scatter(x_3, y_3, label='3月份')
plt.scatter(x_10, y_10, label='10月份')
# 调整x轴的刻度
_x = list(x_3) + list(x_10)
_xtick_labels = ['3月{}日'.format(i) for i in x_3]
_xtick_labels += ['10月{}日'.format(i - 50) for i in x_10]
plt.xticks(_x[::2], _xtick_labels[::2], rotation=45)
# 添加图例
plt.legend()
# 添加描述信息
plt.xlabel('时间')
plt.ylabel('温度')
plt.title('标题')
plt.savefig('7.png')
plt.show()
输出: