我正在尝试使用 ggplot/plotnine 制作一个特定的情节。如果可能的话,我想保持它的情节性,这样我所做的一切都可以留在同一个笔记本中。
本质上,我想创建一个盒/抖动图,允许按类别分离或按类别进一步抖动。
我使用的数据评估了 4 个不同的模型及其基于特定指标的百分比误差。数据结构如下。
数据:
Model metric Percent Error
0 gbr Lower 46.533009
1 gbr Lower 22.654213
2 gbr Lower 17.404358
3 gbr Lower 5.134485
4 gbr Lower 4.550838
... ... ... ...
9963 cqrn Average 5.745320
9964 cqrn Average 16.465810
9965 cqrn Average 14.737193
9966 cqrn Average 81.743560
9967 cqrn Average 73.008793
代码:
(ggplot(dat,aes(x="metric",
y="Percent Error",
color = "Model")) +
geom_jitter(width = .25,alpha=.4,show_legend=False) +
scale_y_log10() +
labs(title=f"Error Metrics"))
我想要一个看起来像这样的图表(抱歉画的粗糙)。这可能会因箱线图或抖动而下降 - 尽管如果可以的话,抖动会得到加分!
答案 0 :(得分:0)
这可以通过设置使用 position = position_jitterdodge()
来实现:
注意:我稍微更改了您提供的示例数据,以使示例更逼真。
dat = [['gbr', 'Lower', 46.533009], ['gbr', 'Lower', 22.654213], ['gbr', 'Lower', 17.404358], ['cqrn', 'Lower', 5.134485],['cqrn', 'Lower', 4.550838],['gbr', 'Average', 5.745320],['gbr', 'Average', 16.465810],['cqrn', 'Average', 14.737193],['cqrn', 'Average', 81.743560],['cqrn', 'Average', 73.008793]]
dat = pd.DataFrame(dat, columns = ['Model', 'metric','Percent Error'])
(ggplot(dat,aes(x="metric",
y="Percent Error",
color = "Model")) +
geom_jitter(alpha=.4, position = position_jitterdodge(jitter_width = .25)) +
scale_y_log10() +
labs(title="Error Metrics"))