如何水平显示堆积的条形图?

蓝天

下面的代码:

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
p1 = [20, 35, 30, 35, 7]
p2 = [25, 32, 34, 20, 55]
p3 = [21, 361, 341, 205,151]

width = 0.35       # the width of the bars: can also be len(x) sequence

fig, ax = plt.subplots()
fig.set_figheight(7)
fig.set_figwidth(13)

ax.bar(labels, p1, width, label='p1')
ax.bar(labels, p2, width, bottom=p1, label='p2')
ax.bar(labels, p3, width, bottom=p2, label='p3')

ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.legend()

figure(num=None, figsize=(14, 7), dpi=80, facecolor='w', edgecolor='k')

plt.show()

呈现:

在此处输入图片说明

我正在尝试将此图表转换为水平图-每个堆叠的条形图都水平显示。

我更改代码以使用hbar

ax.hbar(labels, p1, width, label='p1')
ax.hbar(labels, p2, width, bottom=p1, label='p2')
ax.hbar(labels, p3, width, bottom=p2, label='p3')

但这会导致错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-39-71e7a37d2257> in <module>
     10 fig.set_figwidth(13)
     11 
---> 12 ax.hbar(labels, p1, width, label='p1')
     13 ax.hbar(labels, p2, width, bottom=p1, label='p2')
     14 ax.hbar(labels, p3, width, bottom=p2, label='p3')

AttributeError: 'AxesSubplot' object has no attribute 'hbar'

如何修改图表以使堆积的条形图。可以水平显示吗?

最高

您似乎一直想将参数更改bottom=left=通常,有两种绘制方法。显而易见的是使用barh,不太明显的选择是转换现有的(垂直)bar-plot(对此帖子的回答进行了解释):

编辑/注释:正如@ JohanC正确指出的那样,MVE代码包含一个缺陷,因为它在绘制第三个(绿色)条时并未添加所有先前的条。我的代码经过编辑以产生正确的(预期的)结果。如果仅在的数据上方添加第三条,则在其下方显示该图p2

from matplotlib import pyplot as plt
from matplotlib import transforms
import numpy as np

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
p1 = [20, 35, 30, 35, 7]
p2 = [25, 32, 34, 20, 55]
p3 = [21, 361, 341, 205,151]

width = 0.35       # the width of the bars: can also be len(x) sequence

fig, axs = plt.subplots(1,2)

# first of all, the base transformation of the data points is needed
base = axs[0].transData
rot = transforms.Affine2D().rotate_deg(-90)

axs[0].bar(labels, p1, width, label='p1',transform=rot + base)
axs[0].bar(labels, p2, width, bottom=p1, label='p2',transform=rot + base)
axs[0].bar(labels, p3, width, bottom=np.add(p1,p2), label='p3',transform=rot + base)

axs[1].barh(labels, p1, width, label='p1')
axs[1].barh(labels, p2, width, left=p1, label='p2')
axs[1].barh(labels, p3, width, left=np.add(p1,p2), label='p3')

for i in range(2):
    axs[i].set_xlabel('Scores')
    axs[i].set_title('Scores by group and gender')
    axs[i].legend()

plt.show()

在此处输入图片说明

在第三栏中不加p1p2在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

数据框水平堆积条形图

来自分类Dev

堆积条形图

来自分类Dev

堆积条形图

来自分类Dev

堆积条形图

来自分类Dev

如何在R中以水平堆积条形图的样式创建时间序列图

来自分类Dev

如何缩放ggplot堆积的条形图

来自分类Dev

为什么堆积的水平条形图不能以不同的颜色显示某些值?

来自分类Dev

使用chart.js的水平堆积条形图

来自分类Dev

R:使用Plotly()的水平堆积条形图

来自分类Dev

如何将堆积的条形图作为对堆积的条形图的细化?

来自分类Dev

点网图堆积的条形图显示类似于常规条形图

来自分类Dev

Matplotlib:堆积的条形图

来自分类Dev

排序堆积的条形图

来自分类Dev

ChartJs堆积条形图

来自分类Dev

R堆积条形图

来自分类Dev

ggplot的堆积条形图

来自分类Dev

堆积条形图反转

来自分类Dev

簇堆积条形图

来自分类Dev

熊猫堆积的条形图

来自分类Dev

jqPlot堆积条形图显示为图表外

来自分类Dev

堆积的条形图不显示唯一的数据集

来自分类Dev

创建堆积的条形图,以每月间隔显示数据吗?

来自分类Dev

如何叠加边际增加/减少?堆积条形图-R

来自分类Dev

如何注释堆积条形图的每个部分?

来自分类Dev

如何在matplotlib中制作堆积的条形图?

来自分类Dev

如何使用hvplot绘制堆积的条形图?

来自分类Dev

如何使Pandas DataFrame的堆积条形图起作用?

来自分类Dev

如何获得虚拟变量的堆积条形图

来自分类Dev

如何正确格式化堆积的条形图