scatter 函数原型
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
基础参数讲解
- x, y → 散点的坐标,float or array-like, shape (n, )
- s → 散点的面积,float or array-like, shape (n, ), optional
- c → 散点的颜色(默认值为蓝色,'b',其余颜色同plt.plot( ))
- marker → 散点样式(默认值为实心圆,'o',其余样式同plt.plot( ))
- alpha → 散点透明度([0, 1]之间的数,0表示完全透明,1则表示完全不透明)
- linewidths →散点的边缘线宽
- edgecolors → 散点的边缘颜色
例子1:
import matplotlib.pyplot as plt import numpy as np import random import matplotlib as mpl
x = np.random.randn(100) y = np.random.randn(100) plt.scatter(x,y)
例子2:
n = 20 # 生成20个点
x = np.random.rand(n) y = np.random.rand(n) plt.scatter(x, y, s=100, c='r', marker='*',alpha=0.3) plt.show()
例子3:
plt.scatter(x,y,s=np.power(10*x+10*y,2),c=np.random.randn(100),cmap=mpl.cm.RdYlBu,marker='o')
高级参数讲解
- cmap → 指的是matplotlib.colors.Colormap,相当于多个调色盘的合集
- norm、vmin、vmax → 散点颜色亮度设置
例子4:
rng = np.random.RandomState(0) x = rng.randn(50) # 随机产生50个X轴坐标
y = rng.randn(50) # 随机产生50个Y轴坐标
colors = rng.rand(50) # 随机产生50个用于颜色映射的数值
sizes = 700 * rng.rand(50) # 随机产生50个用于改变散点面积的数值
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3, cmap='viridis') plt.show()
例子5:
x = np.random.randn(20) y = np.random.randn(20) plt.scatter(x,y,c=np.random.randn(20),s=np.power(10*x+10*y,2),cmap='viridis')
例子6:通过plt.colorbar( )显示为颜色条
x = np.random.randn(50) y = np.random.randn(50) colors = np.random.rand(50) plt.scatter(x, y, c=colors, s=60, alpha=0.3, cmap='viridis') plt.colorbar() # 显示颜色条
plt.show()
为更好的观察数据,可重设颜色条的映射范围
需要用到colors.Normalize( ),使用方法如下:
class matplotlib.colors.Normalize(vmin=None, vmax=None)
参数 vmin、vmax 分别为要设置的数据范围的最小值和最大值(注意:设置之后,原来大于vmax的值被“拉低”成vmax;原来小于vmin的值被“拉高”成vmin)
from matplotlib import colors # 注意!为了调整“色盘”,需要导入colors
x = np.random.randn(50) y = np.random.randn(50) color = np.random.rand(50) changecolor = colors.Normalize(vmin=0.4, vmax=0.8) plt.scatter(x, y, c=color, s=60, alpha=0.3, cmap='viridis',norm=changecolor) plt.colorbar() # 显示颜色条
plt.show()
看完点个关注呗!!(总结不易)