用matplotlib画带有误差棒的三维数据散点图(第三维连续变量属性用节点颜色和大小表示)——python
我想绘制一个带有误差棒的散点图,同时数据的第三个属性能用散点大小和颜色表示,我查了很多资料发现如果单独用errorbar来绘制图,其点的大小和颜色很难根据数据而改变,尤其是很难达到一个渐变的效果,因此我想到了把散点图和误差棒图结合为一张图最后我得到的图如下:先分别介绍一下两个函数的参数1. scatter函数(散点图)x,y,z分别代表数据的三个属性,其中x,y分别表示为横纵坐标,z用散点的颜色和
我想绘制一个带有误差棒的散点图,同时数据的第三个属性能用散点大小和颜色表示,我查了很多资料发现如果单独用errorbar来绘制图,其点的大小和颜色很难根据数据而改变,尤其是很难达到一个渐变的效果,因此我想到了把散点图和误差棒图结合为一张图
最后我得到的图如下:
先分别介绍一下两个函数的参数
1. scatter函数(散点图)
x,y,z分别代表数据的三个属性,其中x,y分别表示为横纵坐标,z用散点的颜色和大小表示。
matplotlib中散点图函数scatter介绍
注:该图转来自 Python中scatter函数参数详解_AnneQiQi的博客-CSDN博客_scatter函数
2. errorbar函数(误差棒图)
plt.errorbar(x,y,yerr=None, xerr=None,alpha=1,ecolor ='black',elinewidth=2,capsize=5,capthick=1,linestyle="none")
主要参数说明:
x,y: 数据点的位置坐标
xerr,yerr: 数据的误差范围(在我的图中为y的标准差值)
alpha:误差棒的透明度
ecolor: 误差棒的线条颜色
elinewidth: 误差棒的线条粗细
capsize: 误差棒边界横杠的大小
capthick: 误差棒边界横杠的厚度
linestyle:点之间的连线风格(可以表示为{'-', '--', '-.', ':', '', (offset, on-off-seq), ...})
更多参数可以参考errorbar官方文档:matplotlib.pyplot.errorbar — Matplotlib 3.5.0 documentation
我的代码如下:
import matplotlib.pylab as plt
import numpy as np
import pandas
x = list(A_groups.index) #数据A是我用分类汇总得到的一个dataframe
y = list(A_groups['senti'])
z = list(A_groups['count'])
z_size = [x/40 for x in z] #可以通过对列表进行除法改变节点大小
plt.scatter(x, y, c=z, s =z_size,alpha = 0.8,marker='s',cmap='viridis_r')
plt.colorbar() #在右侧显示颜色条
plt.errorbar(x,y,yerr = y_sd,elinewidth=2,alpha=1,ecolor = 'black',capsize=5,capthick=1,linestyle="none")
更多推荐
所有评论(0)