python中的水平堆叠条形图在Jupyter Notebook中提供多个图表

Posted

技术标签:

【中文标题】python中的水平堆叠条形图在Jupyter Notebook中提供多个图表【英文标题】:Horizontal stacked bar chart in python giving multiple charts in Jupyter Notebook 【发布时间】:2017-11-04 10:29:45 【问题描述】:

我正在尝试在 Jupyter Notebooks 中制作具有指定大小、标题和图例位置的堆叠水平条形图。当我使用其他 Stack Overflow 解决方案时,我会打印出多张图表,而不仅仅是一张。这是一个简化的示例:

import pandas as pd
import matplotlib.pyplot as plt
a = [3,5,4,2,1]
b = [3,4,5,2,1]
c = [3,5,4,6,1]
df = pd.DataFrame('a' : a,'b' : b, 'c' : c)
df.plot.barh(stacked=True);

fig, ax = plt.subplots()
fig.set_size_inches(6,6)

ax.set_title("My ax title")
#plt.title("My plt title") # This seems to be identical to ax.set_title
# Which is prefered?
ax.legend(loc='upper left')

plt.show()

这段代码给了我以下两个图。该情节是我正在寻找的,但我的大小和图例位置被忽略了,并且标题放在了我不想要的第二张图表上。

注意:我使用 pandas 的 plot.barh 是因为我可以使用它,但我很乐意直接从 matplotlib 中进行操作。

【问题讨论】:

【参考方案1】:

您正在使用

创建情节
df.plot.barh(stacked=True)

然后你再次使用

创建一个空图
fig, ax = plt.subplots()

摆脱它,这将处理第二个空地

你可以像这样在 plot 中传递参数

df.plot.barh(stacked=True,title = "My ax title", figsize = (6,6))

【讨论】:

这非常准确。【参考方案2】:

您可以将来自plot 的返回对象分配给变量ax。然后做你想做的事。

a = [3,5,4,2,1]
b = [3,4,5,2,1]
c = [3,5,4,6,1]
df = pd.DataFrame('a' : a,'b' : b, 'c' : c)
ax = df.plot.barh(stacked=True);

ax.figure.set_size_inches(6,6)

ax.set_title("My ax title")
ax.legend(loc='upper left')


或者,您可以在 plot 调用中引用您创建的 ax

a = [3,5,4,2,1]
b = [3,4,5,2,1]
c = [3,5,4,6,1]
df = pd.DataFrame('a' : a,'b' : b, 'c' : c)

fig, ax = plt.subplots()
fig.set_size_inches(6,6)

df.plot.barh(stacked=True, ax=ax);

ax.set_title("My ax title")
ax.legend(loc='upper left')

【讨论】:

以上是关于python中的水平堆叠条形图在Jupyter Notebook中提供多个图表的主要内容,如果未能解决你的问题,请参考以下文章

Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图垂直条形图分组条形图堆叠条形图

水平堆叠的独特 100% 条形图 plotly python

Python第三方库之openpyxl

将水平线添加到 R 中 ggplot2 中的堆叠条形图,并在图例中显示

条形图 在彼此的顶部堆叠数据

R语言ggplot2可视化:ggplot2可视化水平堆叠条形图并且在每个堆叠条形图的内部居中添加百分比文本标签信息