matplotlib 水平堆积图

本文介绍了如何使用matplotlib创建水平堆积图,特别强调了没有数值标签的情况。通过示例代码展示了一个清晰的水平堆积图效果,鼓励读者尝试并给予反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为大部分是竖型堆积图,最重要的是没数值标签,特意牺牲了与左手独处的时间写下了这个例子

话不多说上代码

"""
水平堆积图2019-6-11 11:02:27
@author huangzheng
"""
import tempfile

import matplotlib.pyplot as plt
import numpy as np

from sss.util import remove_edge


def get_rating_chart(labels, data):
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    # 去除坐标轴线
    remove_edge(plt)
    y1 = []
    y2 = []
    y3 = []
    y4 = []
    y5 = []
    for i in data:
        y1.append(i[1])
        y2.append(i[2])
        y3.append(i[3])
        y4.append(i[4])
        y5.append(i[5])
    y1 = np.array(y1)
    y2 = np.array(y2)
    y3 = np.array(y3)
    y4 = np.array(y4)
    y5 = np.array(y5)

    # 堆积柱状图
    height = 0.4

    plt.barh(labels, y1, color='#4472C4', label='1-50名', height=height)
    plt.barh(labels, y2, color='#ED7D31', label='51-100名', height=height, left=y1)
### 创建和使用条形堆积Python中利用`matplotlib`库创建条形堆积是一种有效展示不同类别下各部分贡献度的方法。通过这种表形式,能够直观比较各类别总量的同时也观察到内部组成部分的比例关系。 对于条形堆积而言,在`matplotlib`中的实现主要依赖于多次调用`bar()`方法来叠加不同的数据层[^2]。每次绘制新的柱状体时都需要调整底部位置以确保它们垂直堆叠在一起而不是相互覆盖。具体来说: - 需要准备多组数据作为每一层的高度输入; - 使用变量累积记录前一层顶部的位置以便后续层次以此为基础继续向上构建; - 设置透明度(alpha值)可以让像看起来更加清晰易懂; 以下是基于上述描述的一个简单例子用于说明如何生成水平方向上的条形堆积: ```python import numpy as np import matplotlib.pyplot as plt N = 5 # 类别的数量 menMeans = (20, 35, 30, 35, 27) womenMeans = (25, 32, 34, 20, 25) ind = np.arange(N) # 组的中心位置 width = 0.35 # 条形宽度 fig, ax = plt.subplots() rects1 = ax.bar(ind - width/2, menMeans, width, label='Men') rects2 = ax.bar(ind + width/2, womenMeans, width, bottom=menMeans, label='Women') ax.set_ylabel('Scores') ax.set_title('Scores by group and gender') ax.set_xticks(ind) ax.set_xticklabels(('G1', 'G2', 'G3', 'G4', 'G5')) ax.legend() plt.show() ``` 此代码片段展示了两个群体(男性与女性)在同一分类下的得分情况,并将其以横向排列的方式展现出来。值得注意的是这里的`bottom`参数指定了第二根柱子应该放置在哪一根之上从而形成堆积的效果。 #### 关键点总结 - 利用循环或者手动指定每一轮次所使用的高度以及对应的基底偏移量。 - 可以为每个分量赋予独特的颜色或者其他样式属性使其更易于区分。 - 当处理复杂的数据结构时可能还需要额外考虑排序等问题使得最终结果更具可读性和解释力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十方天士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值