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