打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
matplotlib基础绘图命令之scatter

在matplotlib中,scatter方法用于绘制散点图,与plot方法不同之处在于,scatter主要用于绘制点的颜色和大小呈现梯度变化的散点图,也就是我们常说的气泡图。基本用法如下

plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.randn(10))

输出结果如下

x和y参数指定x轴和y轴坐标,s参数指定mark size, 即点的大小,c参数指定color,即颜色。scatter会根据数值自动进行映射,如果不指定大小和颜色,scatter和普通的plot方法绘制的效果一样,以下两种写法的可视化的效果是等价的

plt.scatter(x=[1, 2, 3, 4],y=[1, 2, 3, 4])

plt.plot([1, 2, 3, 4],[1, 2, 3, 4],'o')

输出结果都是如下所示的散点图

简单的散点图,用plot方法绘制速度会更快,scatter方法则慢一点,所以只有当颜色和大小超过了一定数量时,才推荐使用scatter方法。

scatter函数本身的用法比较简单,难点在于其图例的处理上。scatter函数的返回值为一个PathCollections对象,通过其legend_elements方法,可以获得绘制图例所需的信息,常见的几种图例绘制方法如下

1. 颜色图例

legend_elements方法默认返回的就是colors的信息,可以直接用于绘制图例,代码如下

scatter = plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.choice(np.arange(4), 10))
plt.legend(*scatter.legend_elements())

注意,其中*号是必须的,上述代码会将所有颜色都显示在图例上,输出结果如下

当颜色的值为连续型变量时,采用colorbar的图例更加直观,代码如下

scatter = plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.choice(np.arange(4), 10))
plt.colorbar(scatter)

输出结果如下

2. 点的大小图例

legend_elements方法是有很多参数可以调整的,其中prop参数指定返回的信息,有两种取值,默认是colors, 表示返回的是点的颜色信息,取值为sizes时,返回的是点的大小信息。另外还有一个参数是num, 当图例的取值为连续型时,num指定了图例上展示的点的个数,用法如下

scatter = plt.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.choice(np.arange(4), 10))
plt.legend(*scatter.legend_elements(prop='sizes', num = 6))

输出结果如下

3. 组合图例

上述的可视化效果都比较简单,通过matplotlib.pyplot就可以搞定了,对于图例的组合,需要借助axes来实现,代码如下

fig, ax = plt.subplots()
scatter = ax.scatter(x= np.random.randn(10), y=np.random.randn(10),s=40 * np.arange(10),c=np.random.choice(np.arange(4), 10))
legend1 = ax.legend(*scatter.legend_elements(prop='colors'), loc='upper left',title='colors',bbox_to_anchor=(1, 0, 0.5, 1))
ax.add_artist(legend1)
legend2 = ax.legend(*scatter.legend_elements(prop='sizes', num = 6), loc='lower left',title='sizes',bbox_to_anchor=(1, 0, 0.5, 1))

输出结果如下

从这里也可以看出,对于简单的图片展示,pyplot模块为我们提供了便利,但是复杂的图形组合,还是需要用axes来实现。

·end·

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
使用Python绘制图表大全
【数字的可视化:python画图之散点图sactter函数详解】
三维散点图
用Python自动实现图表可视化操作,提高工作效率,又能有更多的时间摸鱼了~
如何驾驭Matplotlib?<Part1>
学习pandas下的dataframe画图参数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服