如何在Seaborn中获取自定义坐标列表绘制的箱线图的中位数数值
获取边缘箱线图中位数的两种实用方法
方法一:直接计算筛选后数据的中位数
Seaborn箱线图的中位数计算逻辑和numpy/pandas的中位数计算完全一致,所以直接对你手里的xValues和yValues计算即可,简单高效。
示例代码:
import numpy as np # 计算x轴箱线图的中位数 x_median = np.median(xValues) # 计算y轴箱线图的中位数 y_median = np.median(yValues) print(f"x轴中位数:{x_median}") print(f"y轴中位数:{y_median}")
如果xValues是pandas Series类型,也可以用xValues.median(),结果完全相同。
方法二:从已绘制的箱线图对象中提取数值
如果你想从生成的JointGrid图里直接获取中位数,可以通过边缘轴的绘图元素提取。你设置的珊瑚色中位数线是唯一标识,能快速定位到对应数据。
示例代码:
import matplotlib.pyplot as plt # 提取顶部x轴边缘箱线图的中位数 top_ax = g.ax_marg_x # 获取轴上所有绘图元素 x_box_elements = top_ax.get_children() # 筛选出你设置的珊瑚色中位数线 x_median_line = [line for line in x_box_elements if isinstance(line, plt.Line2D) and line.get_color() == 'coral'][0] # 提取中位数数值(中位数线的y坐标即为数值) x_median = x_median_line.get_ydata()[0] # 提取右侧y轴边缘箱线图的中位数 right_ax = g.ax_marg_y y_box_elements = right_ax.get_children() y_median_line = [line for line in y_box_elements if isinstance(line, plt.Line2D) and line.get_color() == 'coral'][0] # 提取中位数数值(中位数线的x坐标即为数值) y_median = y_median_line.get_xdata()[0] print(f"x轴中位数:{x_median}") print(f"y轴中位数:{y_median}")
内容的提问来源于stack exchange,提问作者lnlyprog
相关产品推荐
相关产品推荐

