如何在Python中生成如图所示格式的图表?求实现代码
Python实现目标格式图表的代码
以下是用matplotlib实现匹配你需求的分组条形图(带误差棒)的代码,完全对应你提供的图表样式:
import matplotlib.pyplot as plt import numpy as np # 自定义数据 categories = ['类别1', '类别2', '类别3', '类别4'] # X轴主类别 sub_groups = ['子组A', '子组B', '子组C'] # 每个主类别下的子分组 colors = ['#1f77b4', '#ff7f0e', '#2ca02c'] # 子分组对应配色 # 子分组的数值数据 group_values = [ [20, 25, 18, 22], [15, 18, 16, 20], [22, 24, 20, 25] ] # 误差棒数据(模拟标准差) error_values = [ [2, 3, 1.5, 2.5], [1.2, 1.8, 1.5, 2], [2.2, 2, 1.8, 2.3] ] bar_width = 0.25 # 单个条形宽度 x_axis = np.arange(len(categories)) # X轴位置基准 # 循环绘制每个子分组的条形与误差棒 for idx in range(len(sub_groups)): plt.bar(x_axis + idx*bar_width, group_values[idx], width=bar_width, color=colors[idx], label=sub_groups[idx], edgecolor='white') plt.errorbar(x_axis + idx*bar_width, group_values[idx], yerr=error_values[idx], fmt='none', c='black', capsize=5) # 配置图表样式 plt.xlabel('类别', fontsize=12) plt.ylabel('数值', fontsize=12) plt.title('分组条形图(带误差棒)', fontsize=14) plt.xticks(x_axis + bar_width, categories, fontsize=10) plt.legend(title='子分组') plt.grid(axis='y', linestyle='--', alpha=0.7) plt.tight_layout() plt.show()
调整说明:
- 直接替换
categories、sub_groups、group_values和error_values即可适配你的真实数据 - 修改
colors列表可以自定义条形配色 - 调整
bar_width(条形宽度)和capsize(误差棒短横线长度)可优化图表美观度
内容的提问来源于stack exchange,提问作者Masmok
相关产品推荐
相关产品推荐

