给定以下示例df:
Start Event
February A
February A
February B
February C
February C
March A
March B
March B
March D
March D
March C
April A
April A
April A
April B
April B
April B
April C
April C
April D
April D
April D当我尝试用seaborn绘制直方图时,如下所示:
sns.histplot(data=df, x='Start', hue='Event', multiple='dodge', discrete=False)我得到了以下结果:

但我希望垃圾箱在x轴上居中(就像三月一样)。我该怎么做呢?
如果我将‘离散’设置为True,它会将所有的回收站放在一起,而这不是我想要的。
提前感谢!
编辑:看起来我不应该使用柱状图,但实际上是柱状图!使用"sns.catplot“可以很好地工作。
发布于 2021-07-12 07:46:59
使用discrete=False,虽然您确实有离散值,但您得到的直方图是非常错误的。
默认情况下,直方图尝试最大限度地利用空间,在组之间不留间隙。例如,您可以设置shrink=0.9来创建一个小间隙。请注意,将为二月份丢失的D创建一个高度为零的条形图。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
from io import StringIO
data_str = '''Start Event
February A
February A
February B
February C
February C
March A
March B
March B
March D
March D
March C
April A
April A
April A
April B
April B
April B
April C
April C
April D
April D
April D'''
df = pd.read_csv(StringIO(data_str), delim_whitespace=True)
sns.histplot(data=df, x='Start', hue='Event', multiple='dodge', shrink=0.9)
plt.margins(x=0.02) # less whitespace left and right
plt.show()

https://stackoverflow.com/questions/68337980
复制相似问题