使用Seaborn和Pandas绘图时如何防止柱状图重叠。

3
我正在尝试使用pandas绘图功能和seaborn库来创建一个水平堆叠条形图。我希望移除条之间的间距,但是也不想让条重叠。这是我的尝试代码:
import pandas as pd
import numpy as pd
import seaborn as sns

df = pd.DataFrame(np.random.rand(15, 3))
df.plot.barh(stacked=True, width=1)

在此输入图片描述

这似乎可以在不导入seaborn的情况下工作,虽然我喜欢seaborn的样式,通常情况下,在我使用的ipython笔记本中,它是一个导入。这种方式可行吗?


“我想要去掉条形图之间的空格,但是又不希望条形图重叠。” --> 对我来说,您发布的图片并没有满足这些条件,不太清楚。 - Paul H
仔细观察图表,例如数字4的红色部分与其下方的条形图重叠。在有更多条形图的情况下,这一点更加明显,并且当条形图足够多时,几乎无法辨认。 - johnchase
如果将dpi参数设置得更高,保存图形会发生什么? - Paul H
将dpi设置为1000似乎并没有改善它。 - johnchase
2个回答

5
这个工件在使用 seaborn 风格的柱状图线宽时,也可以在 matplotlib 默认情况下看到:
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(15, 3))
df.plot(stacked=True, width=1, kind="barh", lw=.5)

在此输入图片描述

解决方案是将条形图的线调整回到大致与matplotlib默认值相同的位置:

import pandas as pd
import numpy as np
import seaborn as sns

df = pd.DataFrame(np.random.rand(15, 3))
df.plot(stacked=True, width=1, kind="barh", lw=1)

enter image description here


有趣的是,无论我指定哪个行宽,这个问题似乎都会消失,但我并不完全理解。不过这确实解决了问题,谢谢。 - johnchase

2
也许你应该减少行宽?
import seaborn as sns

f, ax = plt.subplots(figsize=(10, 10))
df.plot(kind='barh', stacked=True, width=1, lw=0.1, ax=ax)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接