发现plt.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, , data=None, *kwargs)
参数说明
x, y : 相同长度的数组,数组大小(n,),也就是绘制散点图的数据;
s:绘制点的大小,可以是实数或大小为(n,)的数组, 可选的参数 ;
c:绘制点颜色, 默认是蓝色'b' , 可选的参数 ;
marker:表示的是标记的样式,默认的是'o' , 可选的参数 ;
cmap:当c是一个浮点数数组的时候才使用, 可选的参数 ;
norm:将数据亮度转化到0-1之间,只有c是一个浮点数的数组的时候才使用, 可选的参数 ;
vmin , vmax:实数,当norm存在的时候忽略。用来进行亮度数据的归一化 , 可选的参数 ;
alpha:实数,0-1之间, 可选的参数 ;
linewidths:标记点的长度, 可选的参数 ;
常见散点图样式如下:
Python实现
随机生成数据,绘制默认情况下的散点图
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif'] = [u'SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
import numpy as np
m=15
x=np.random.rand(m)
y=np.random.rand(m)
plt.subplots_adjust(wspace=0.5,hspace=0.5)
plt.scatter(x, y)
plt.title("默认情况下")
结果如下
点大小
# s和原始数组大小一样
area=(30*np.random.rand(m))**2
plt.subplot(121)
plt.scatter(x, y,s=100)
plt.title("点大小相同")
plt.subplot(122)
plt.scatter(x, y,s=area)
plt.title("点大小不同")
结果如下
点颜色和透明度
# c和原始数组大小一样
colors=np.random.rand(m)
plt.subplot(121)
plt.scatter(x, y,s=area,c=colors)
plt.title("大小s和颜色c")
plt.subplot(122)
plt.title("颜色透明度alpha")
plt.scatter(x, y,s=area,c=colors,alpha=0.5)
结果如下
点样式和线宽度
# 点样式和线宽度
lines=np.zeros(m)+5
plt.subplot(121)
plt.title("点样式marker")
plt.scatter(x, y,s=area,c=colors,alpha=0.5,marker='+')
plt.subplot(122)
plt.title("点样式为闭合的情况下,线宽度")
plt.scatter(x, y,s=area,c=colors,alpha=0.5,marker='o',linewidths=lines)
结果如下:
相关链接
cmap颜色图的分类链接
散点的形状参数marker 参考链接