如何获得包含镶嵌面的并排直方图?没有刻面,直方图看起来不错,但很难比较第二组和第三组的计数:

from plotnine import *
import pandas as pd 
import numpy as np

quality = ['poor', 'fair', 'good', 'very good', 'excellent']
cat1 = np.random.choice(quality,1000)
cat2 = np.random.choice(quality,1000)
cat3 = np.random.choice(quality,1000)

df = pd.DataFrame({
    'One': pd.Categorical([*cat1, *cat1], categories= quality),
    'group': np.repeat(['Two', 'Three'], len(cat1)),
    'cat': pd.Categorical([*cat2, *cat3], categories= quality)
})

(
    ggplot(df, aes(x = 'cat', fill = 'group'))
    + geom_histogram(bins = 5) # , position = 'dodge'
    + facet_grid('One ~ .')
    + theme(figure_size=(6, 6))
)

enter image description here

但当我加上position = 'dodge'参数时,条形变得非常窄,不再与x轴正确对齐:

(
    ggplot(df, aes(x = 'cat', fill = 'group'))
    + geom_histogram(bins = 5, position = 'dodge')
    + facet_grid('One ~ .')
    + theme(figure_size=(6, 6))
)

enter image description here

同样的事情发生在position = position_dodge(.75)而不是position = 'dodge'(未显示).

推荐答案

因为x美学是离散的,所以你应该使用geom_bar.

(
    ggplot(df, aes(x = 'cat', fill='group'))
    + geom_bar(position='dodge', width=.95)
    + facet_grid('One ~ .')
    + theme(figure_size=(6, 6))
)

enter image description here

Python相关问答推荐

如何在具有重复数据的pandas中对groupby进行总和,同时保留其他列

在Pandas DataFrame操作中用链接替换'方法的更有效方法

管道冻结和管道卸载

pyscript中的压痕问题

Django RawSQL注释字段

在www.example.com中使用`package_data`包含不包含__init__. py的非Python文件

需要帮助重新调整python fill_between与数据点

如何使用Numpy. stracards重新编写滚动和?

(Python/Pandas)基于列中非缺失值的子集DataFrame

用SymPy在Python中求解指数函数

如何删除重复的文字翻拍?

如何在Airflow执行日期中保留日期并将时间转换为00:00

有没有办法让Re.Sub报告它所做的每一次替换?

在round函数中使用列值

python3中np. divide(x,y)和x/y有什么区别?'

Django更新视图未更新

两个名称相同但值不同的 Select 都会产生相同的值(discord.py)

某些值的数值幂和**之间的差异

将鼠标悬停在海运`pairplot`的批注/高亮显示上

对列中的数字进行迭代,得到n次重复开始的第一个行号