You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python/Seaborn制作指定样式的水平条形图?

用Python实现指定样式的条形图

完全可以用Matplotlib实现你要的这种条形图,下面是直接可用的代码示例,完全匹配你的需求:

import matplotlib.pyplot as plt

# 准备示例数据
categories = ["类别A", "类别B", "类别C", "类别D"]
percentages = [0.72, 0.58, 0.91, 0.36]
colors = ["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728"]

# 设置绘图大小
fig, ax = plt.subplots(figsize=(8, 3))

# 遍历每个类别绘制图形
for i, (cat, pct, color) in enumerate(zip(categories, percentages, colors)):
    # 绘制灰色背景条(占满整个宽度)
    ax.barh(i, 1, height=0.6, color="#e0e0e0")
    # 绘制对应百分比的彩色条
    ax.barh(i, pct, height=0.6, color=color)
    # 在灰色条内添加类别名称
    ax.text(0.02, i, cat, va="center", fontsize=10, color="#333333")
    # 在彩色条右侧添加百分比数值
    ax.text(pct + 0.02, i, f"{pct*100:.0f}%", va="center", fontsize=10, color="#333333")

# 调整坐标轴样式
ax.set_yticks([])  # 隐藏y轴刻度
ax.set_xlim(0, 1.1)  # 给百分比文本留出空间
ax.spines[['top', 'right', 'left', 'bottom']].set_visible(False)  # 隐藏边框

plt.tight_layout()
plt.show()

关键实现细节说明:

  • 灰色条形占满宽度:通过ax.barh(i, 1, ...)绘制宽度为1的灰色条,刚好覆盖整个x轴0到1的范围,也就是绘图区的全部宽度。
  • 彩色部分对应百分比:彩色条的宽度直接使用百分比的小数形式(比如72%就是0.72),实现比例匹配。
  • 类别名称置于条形内部:用ax.text把文本放在x=0.02的位置,刚好在灰色条的左侧区域。
  • 彩色旁显示百分比:把文本放在彩色条的右侧(x=pct+0.02),同时把小数转换成百分比格式显示。

你可以根据自己的需求替换数据、颜色、字体大小等参数,调整出更贴合你场景的样式。

内容的提问来源于stack exchange,提问作者Nova

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:55:34