Python-从Pandas数据创建单个水平堆叠条形图?
我希望创建一个水平堆叠条形图,作为饼图的替代,以显示百分比 我很确定plot.barh会完成这项工作,它会在我的另一段代码中创建多个堆叠条。但在这里它没有堆叠的酒吧。我怎么修理它Python-从Pandas数据创建单个水平堆叠条形图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我希望创建一个水平堆叠条形图,作为饼图的替代,以显示百分比 我很确定plot.barh会完成这项工作,它会在我的另一段代码中创建多个堆叠条。但在这里它没有堆叠的酒吧。我怎么修理它 import pandas as pd import matplotlib.pyplot as plt data=pd.DataFrame(data={"R1":["Yes","Yes","Yes","No","No"]}) freq = data["R1"].value_counts(normalize=True)
import pandas as pd
import matplotlib.pyplot as plt
data=pd.DataFrame(data={"R1":["Yes","Yes","Yes","No","No"]})
freq = data["R1"].value_counts(normalize=True)*100
fig,ax = plt.subplots()
freq.plot.barh(ax=ax,stacked=True)
堆叠意味着将一个数据帧的多个系列放在彼此的顶部,这样它们的值就会累积起来。 您只有一个具有两个值的系列,因此这些值被绘制在一个条形系列中 您可以从序列中生成一个数据帧,对其进行转换,使“是”和“否”为两列,每列具有一个值,然后按您尝试的方式绘制:
freq.to_frame().T.plot.barh(stacked=True)
要检查差异,请执行以下操作:
freq
# Yes 60.0
# No 40.0
# Name: R1, dtype: float64
freq.to_frame().T
# Yes No
# R1 60.0 40.0
哎哟,这很有效,是的。但出于某种原因,Matplotlib将该图置于法线轴下方,因此我得到两个图,正确的一个位于普通空白图下方,一个具有默认轴,我似乎无法将图像添加到注释中,抱歉。以前从没见过!我该如何解决这个问题?没有代码是不可能的。正如你上面问题的原则在这里得到了回答,这个新问题可能更好地放在一个新问题中。