绘图,缺少值时保持geom_barposition ='dodge'的相同位置

问题描述

此最小代码

import pandas as pd
import plotnine as p9

df = pd.DataFrame({
    'variable': ['a','b','b'],'value': [1,1,1],'name': ['one','one','two']
})
(
    p9.ggplot(df,p9.aes(x='name',y='value',fill='variable'))
    + p9.geom_bar(stat='identity',position=p9.position_dodge(preserve='single'))
)
由于缺少值,

会产生以下不正确的条形图。

bar plot with incorrect bar placement

如何使名称two和变量b的条位于正确的位置(在two x轴刻度的右侧)?

Visualization of what I want

解决方法

Plotnine不会为条形图的空白类别保留任何空格。但是,使用children可以获得更好的定位,它可以使每个position_dodge2(preserve='single')位置的条形居中。