plotnine geom_boxplot 忽略必需的审美并要求不必要的审美
plotnine geom_boxplot ignores required aesthetic and requires unnecessary aesthetic
我的数据如下:
Scenario ymin lower middle upper ymax
One 16362.586379 20911.338893 27121.693254 35219.449009 46406.087619
Two 19779.003240 25390.096116 33108.174561 43545.202225 58464.277060
我没有为每个场景使用 所有 50 k 个数据点(比一和二多得多),而是计算了盒子和胡须所需的位置.
我尝试通过
绘制这个
import pandas
import plotnine as p9
df = pandas.read_excel('boxplot_data.xlsx', sheet='Sheet1')
gg = p9.ggplot()
gg += p9.geoms.geom_boxplot(mapping=p9.aes(x='Scenario', ymin='ymin', lower='lower', middle='middle', upper='upper', ymax='ymax'), data=df, color='k', show_legend=False, inherit_aes=False)
gg += p9.themes.theme_seaborn()
gg += p9.labels.xlab('Scenario')
gg.save(filename='scenario_boxplot.png', dpi=300)
https://plotnine.readthedocs.io/en/stable/generated/plotnine.geoms.geom_boxplot.html#plotnine.geoms.geom_boxplot 处的文档指出 geom_boxplot 行代码提供了定义盒子和胡须所需的美学参数。
运行 然而,这给出了
plotnine.exceptions.PlotnineError: 'stat_boxplot requires the
following missing aesthetics: y'
为什么调用stat_boxplot,它需要美学,而不是geom_boxplot?
更重要的是,有人知道如何纠正这个问题吗?
您正在使用 geom_boxplot
和 stat_boxplot
而不是 stat_identity
。
geom_boxplot(stat='identity', ...)
我的数据如下:
Scenario ymin lower middle upper ymax
One 16362.586379 20911.338893 27121.693254 35219.449009 46406.087619
Two 19779.003240 25390.096116 33108.174561 43545.202225 58464.277060
我没有为每个场景使用 所有 50 k 个数据点(比一和二多得多),而是计算了盒子和胡须所需的位置.
我尝试通过
绘制这个import pandas
import plotnine as p9
df = pandas.read_excel('boxplot_data.xlsx', sheet='Sheet1')
gg = p9.ggplot()
gg += p9.geoms.geom_boxplot(mapping=p9.aes(x='Scenario', ymin='ymin', lower='lower', middle='middle', upper='upper', ymax='ymax'), data=df, color='k', show_legend=False, inherit_aes=False)
gg += p9.themes.theme_seaborn()
gg += p9.labels.xlab('Scenario')
gg.save(filename='scenario_boxplot.png', dpi=300)
https://plotnine.readthedocs.io/en/stable/generated/plotnine.geoms.geom_boxplot.html#plotnine.geoms.geom_boxplot 处的文档指出 geom_boxplot 行代码提供了定义盒子和胡须所需的美学参数。
运行 然而,这给出了
plotnine.exceptions.PlotnineError: 'stat_boxplot requires the following missing aesthetics: y'
为什么调用stat_boxplot,它需要美学,而不是geom_boxplot?
更重要的是,有人知道如何纠正这个问题吗?
您正在使用 geom_boxplot
和 stat_boxplot
而不是 stat_identity
。
geom_boxplot(stat='identity', ...)