如何为Python多组双列条形图设置自定义独立标签?
实现每组自定义标签的双列条形图
基于原示例的matplotlib实现逻辑,只需要调整x轴刻度的位置与对应标签,就能给每组双列条形设置完全不同的自定义标签,下面是完整的可运行代码:
import matplotlib.pyplot as plt import numpy as np # 定义组名、每组的条形标签和对应数据 group_names = ['第一组', '第二组'] per_group_labels = [ ['project 7', 'project 8'], ['low salary 5 years', 'high salary 5 years'] ] group_data = [ [12, 18], # 第一组两个条形的数值 [9, 22] # 第二组两个条形的数值 ] bar_width = 0.35 # 计算每组的中心x位置 group_x = np.arange(len(group_names)) fig, ax = plt.subplots() # 循环绘制每组的两个条形 for idx in range(len(group_names)): # 单个条形的x位置:组中心 ± 半宽 bar_x_positions = [group_x[idx] - bar_width/2, group_x[idx] + bar_width/2] ax.bar(bar_x_positions, group_data[idx], bar_width, label=group_names[idx]) # 收集所有条形的位置和对应的自定义标签 all_bar_positions = [] all_bar_labels = [] for idx in range(len(group_names)): all_bar_positions.extend([group_x[idx] - bar_width/2, group_x[idx] + bar_width/2]) all_bar_labels.extend(per_group_labels[idx]) # 设置x轴刻度为每个条形的位置,标签替换为自定义文本 ax.set_xticks(all_bar_positions) ax.set_xticklabels(all_bar_labels, rotation=45, ha='right') # 图表基础设置 ax.set_ylabel('数值') ax.set_title('每组自定义标签的双列条形图') ax.legend() # 自动调整布局,避免标签被截断 plt.tight_layout() plt.show()
关键修改说明
- 单独定义
per_group_labels列表,分别存放两组的自定义条形标签 - 绘制条形时,精准计算每个条形的x坐标(基于组中心位置偏移)
- 把所有条形的位置和对应标签汇总后,替换原有的组级刻度,让每个条形显示专属标签
- 给x轴标签添加旋转角度,避免长标签重叠
内容的提问来源于stack exchange,提问作者noooah
相关产品推荐
相关产品推荐

