gpt4 book ai didi

python - 按类别分隔的 Pandas 数据框误差条图

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:51 25 4
gpt4 key购买 nike

因此,我尝试了 seabornpandas native 绘图功能,但感觉自己被降级为使用纯 matplotlib,这令人失望但这是我目前遇到的问题。

我有一个 pandas 数据框,其中包含时间的 x 值、幅度的 y 值以及名为“不确定性”的列中的自定义误差值。我还有一个名为“过滤器”的专栏。对于每个过滤器,我想基本上绘制一个带有x=时间、y=幅度、yerr=不确定性的误差条图。这是一个示例数据(因为真实数据是专有的):

Image   Filter    Time  Magnitude   Uncertainty
File1 1 micron 0 12.1 0.008
File2 1.5 micron 0 13.4 0.01
File3 1 micron 1 12.9 0.01
File4 1.5 micron 1 13.8 0.013
File5 1 micron 2 14.2 0.014
File6 1.5 micron 2 14.66 0.0155
File7 1 micron 3 15.12 0.017
File8 1.5 micron 3 15.58 0.0185
File9 1 micron 4 16.04 0.02
File10 1.5 micron 4 16.5 0.0215
File11 1 micron 5 16.96 0.023
File12 1.5 micron 5 17.42 0.0245
File13 1 micron 6 17.88 0.026
File14 1.5 micron 6 18.34 0.0275
File15 1 micron 7 18.8 0.029
File16 1.5 micron 7 19.26 0.0305
File17 1 micron 8 19.72 0.032
File18 1.5 micron 8 20.18 0.0335
File19 1 micron 9 20.64 0.035
File20 1.5 micron 9 21.1 0.0365

因此,在单个图上,我想要一系列带有与该过滤器(1 微米或 1.5 微米)相对应的误差条(基于不确定性列)的点。

如果我在 seaborn 中执行此操作,我会得到以下结果:

Seaborn's attempt at doing a plot

我无法制作带有错误栏的 map (如上面一行中注释的那样),因为它声明:

"ValueError: yerr must be a scalar, the same dimensions as y, or 2xN."

如果我直接在 pandas 中尝试这个,我会得到以下结果:

Pandas attempt at doing this

这两个都不是我想要的。我认为 pandasseaborn 应该可以缓解所有这些问题,并使完成此类工作变得更简单、更容易,而不必做一些人为的废话,比如将其读入 numpy genfromtxt,按过滤器排序等

最佳答案

这就是实现你想要的:

g = sns.FacetGrid(data=df, hue='Filter')
g.map(plt.errorbar, 'Time', 'Magnitude', 'Uncertainty', fmt='o', elinewidth=1, capsize=5, capthick=1)
g.add_legend()

enter image description here

正如 @FabienP 在他的评论中所说,你的问题可能只是你的错误栏太小而看不见。您的意思是绘制 yerr=Magnitude*Uncertainty 吗?

关于python - 按类别分隔的 Pandas 数据框误差条图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45945042/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com