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

如何在Python中制作与目标图完全一致的环形柱状图

如何在Python中制作与目标图完全一致的环形柱状图

嘿,我明白你想做出和目标图一模一样的环形柱状图的需求啦!你现有的代码已经搭好了基础框架,不过要完全匹配目标图的样式,还需要调整几个关键细节。下面我给你一套优化后的方案,你可以根据目标图的具体特征再微调:

优化后的完整代码

import matplotlib.pyplot as plt
import numpy as np

# 1. 数据准备(根据目标图替换成你的实际数据)
N = 7
category_labels = ["类别1", "类别2", "类别3", "类别4", "类别5", "类别6", "类别7"]
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
# 柱子的高度数据
radii = np.array([5, 7, 3, 8, 6, 4, 9])
# 环形内圈半径(控制中空区域大小)
inner_radius = 3
# 柱子宽度(留出间距更美观)
bar_width = 2 * np.pi / N * 0.8

# 2. 创建极坐标画布
fig, ax = plt.subplots(subplot_kw={'projection': 'polar'}, figsize=(8, 8))

# 3. 绘制环形柱状图
bars = ax.bar(
    theta, 
    radii, 
    width=bar_width, 
    bottom=inner_radius, 
    color=plt.cm.Set2(np.arange(N)/N)  # 可替换为目标图的专属配色
)

# 4. 样式匹配调整
ax.set_theta_zero_location("N")  # 角度从顶部(正北)开始
ax.set_theta_direction(-1)  # 顺时针旋转方向
ax.set_yticks([])  # 隐藏径向刻度(如果目标图没有的话)
ax.set_xticks(theta + bar_width/2)  # 设置刻度在柱子中间
ax.set_xticklabels(category_labels)  # 替换为类别标签

# 5. 可选:添加柱子数值标签(如果目标图显示的话)
for bar, height in zip(bars, radii):
    angle = bar.get_x() + bar.get_width()/2
    ax.text(angle, inner_radius + height + 0.3, 
            f"{height}", ha='center', va='center', fontweight='bold')

# 6. 添加标题(按需调整)
ax.set_title("匹配目标样式的环形柱状图", y=1.1, fontsize=12)

plt.show()

关键调整说明

  • 环形中空效果:通过设置bottom=inner_radius让柱子从内圈半径开始绘制,调整inner_radius可以控制中空区域的大小,完美匹配目标图的环形粗细。
  • 柱子间距与宽度:把宽度设为2*np.pi/N * 0.8,预留20%的间距,避免柱子挤在一起,更贴近常见的环形图样式。
  • 标签匹配:
    • 用set_xticklabels替换默认刻度为类别名称,位置对应柱子中间;
    • 可选添加柱子数值标签,精准放在柱子顶部。
  • 配色自定义:如果目标图有特定颜色,直接把color参数换成颜色列表即可,比如color=["#FF6B6B", "#4ECDC4", "#45B7D1", ...]。
  • 样式细节:隐藏了径向刻度(如果目标图有径向刻度,取消ax.set_yticks([])并设置对应刻度值即可),角度方向和起始位置和你的原代码保持一致。

你可以根据目标图的具体细节(比如是否有网格线、标题样式、标签字体等)再微调参数,应该就能做出完全一致的环形柱状图啦!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 12:24:28