首先导入函数:
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np
rng = np.random.RandomState(0)
for marker in ['o','.','x',',','+','v','^','<','>','s','d']:
plt.plot(rng.rand(5),rng.rand(5),marker,
label=f"maker={marker}")
plt.legend(numpoints=1) # 图例 点的数量
plt.xlim(0,1.9)
# 可以用 plt.plot(x,y,'-ok') -是直线风格 o是圆圈标记 k是颜色
"""
plt.plot()有许多设置线条和散点属性参数的参数:
color,linewidth=数值,
markerfacecolor='颜色',
markeredgecolor='颜色',
markeredgewidth=数值
"""
plt.scatter(x, y, marker="o")
更加灵活,可以单独控制每个散点和数据匹配、拥有不同属性(大小、表面颜色、边框颜色)rng = np.random.RandomState(0)
x = rng.randn(100)
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)
plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,cmap='viridis')
plt.colorbar() # 显示颜色条
"""
下面记录plt.scatter()的参数:
matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None,
cmap=None,alpha=None, linewidths=None,edgecolors=None, norm=None)
"""
# 1) x,y 是横纵坐标 #
# 2) s 是点的大小 #
# 3) c 是点的颜色可以是RGB数字,也可以是一个RGB或RGBA二维行数组 #
# 4) marker 是点的形状 一般默认"o" #
# 5) cmap (当c是浮点数组的时候才使用) 调取c的数值做一个数值和颜色的映射
# 参数可选取"viridis" #
# 6) linewidths 是点边缘线宽 #
# 7) edgecolors 是点边缘颜色 #
# 8) norm (当c是浮点数组的时候才使用) 是调整映射范围的 #
# 需要调用matplotlib.color.Nomalize() 如下:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mlt
rng = np.random.RandomState(0)
x = rng.randn(100) #横坐标
y = rng.randn(100) #纵坐标
color = rng.rand(100) #
sizes = 1000 * rng.rand(100)
changecolor = mlt.colors.Normalize(vmin=0.2,vmax=0.8) # vmin 和 vmax 参数用来调整颜色条范围,
plt.scatter(x, y, c=color, s=sizes, alpha=0.3,
cmap="viridis",norm=changecolor)
plt.colorbar(); # 显示颜色条
回顾上篇plot,与之相比呢,scatter 因为数据中每个散点的颜色、尺寸都是单独渲染的,plot散点基本都是彼此复制。因此在对大型数据集处理时,性能方面存在很大差异,不推荐使用scatter方法。
写于最后:除了x,y能够表现两个维度的数据,颜色随着第三维度数据的变化也是在探索和演示数据时非常有用的!
如有纰漏,还请多多包涵,感谢大家批评指正!