如何为Pandas箱线图添加第二垂直坐标轴?
实现带第二垂直坐标轴的并排箱线图
完全可以通过pandas结合matplotlib实现这个需求,核心思路是在现有绘图轴的基础上创建共享横轴的第二垂直轴,替换刻度标签即可。以下是修改后的完整代码:
import pandas as pd import numpy as np import matplotlib.pyplot as plt # 定义第二轴的标签映射 second_axis = {0:'a', 1: 'b', 2: 'c'} # 生成样本数据 group = np.array([np.random.binomial(2, 0.4) for _ in range(100)]) data = [np.random.uniform(0, 5) for _ in range(len(group))] df = pd.DataFrame({'data': data, 'group': group}) # 绘制水平箱线图并获取轴对象 ax = df.boxplot(by='group', vert=False, return_type='axes')[0] # 创建右侧的第二垂直坐标轴 ax2 = ax.twinx() # 对齐第二轴与原轴的刻度位置,替换为自定义标签 ax2.set_yticks(ax.get_yticks()) ax2.set_yticklabels([second_axis[int(tick.get_text())] for tick in ax.get_yticklabels()]) # 优化布局避免标签重叠 plt.tight_layout() plt.show()
关键步骤说明:
- 绘制箱线图时通过
return_type='axes'获取轴对象,方便后续自定义操作 - 使用
twinx()创建共享横轴的第二垂直轴,保证两个轴的垂直刻度位置完全对齐 - 提取原轴的刻度文本,通过映射关系替换为自定义标签
a/b/c - 调用
tight_layout()自动调整图表元素位置,避免标签或布局重叠
内容的提问来源于stack exchange,提问作者Tommy Do
相关产品推荐
相关产品推荐

