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

如何在Pandas箱线图中标记DataFrame最后一行数据

问题:在横向箱线图中添加标记列最后一行数据的红点

初始代码与数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

data = pd.DataFrame(np.random.normal(size=(20,4)))
# 数据预览
"""
                0           1           2          3
0   -0.710006   -0.748083   -1.261515    0.048941
1    0.856541    0.533073    0.649113   -0.236297
2   -0.091005   -0.244658   -2.194779    0.632878
3   -0.059058    0.807661   -0.418446   -0.295255
4   -0.103701    0.775622    0.258412    0.024411
5   -0.447976   -0.034419   -1.521598   -0.903301
6    1.451105    0.549661   -1.655751   -0.147499
7    1.479374   -1.475347    0.665726    0.236611
8   -1.427979   -1.812916    0.522802    0.006066
9    0.198515    1.203476   -0.475389   -1.721707
10   0.286255    0.564450    0.590050   -0.657811
11  -1.076161    1.820218   -0.315127   -0.848114
12   0.061848    0.303502    0.978169    0.024630
13  -0.307827   -1.047835    0.547052   -0.647217
14   0.679214    0.734134    0.158803   -0.334951
15   0.469675    1.043391   -1.449727    1.335354
16  -0.483831   -0.988185    0.264027   -0.831833
17  -2.013968   -0.200699    1.076526    1.275300
18  -0.199473   -1.630597   -1.697146   -0.177458
19   1.245289    0.132349    1.054312   -0.082550
"""
# 生成初始横向箱线图
data.boxplot(vert=False, figsize=(15,10))

初始箱线图

初始箱线图

需求

在上述横向箱线图的每个列对应位置添加红点,标记DataFrame每一列的最后一行数据值(示意如下):
带红点的箱线图示例


解决方案

直接在箱线图绘制完成后,用散点图添加对应红点即可,完整代码如下:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 生成数据
data = pd.DataFrame(np.random.normal(size=(20,4)))

# 绘制横向箱线图
ax = data.boxplot(vert=False, figsize=(15,10))

# 提取最后一行数据
last_row_values = data.iloc[-1].values
# 每个列对应的y轴位置(横向箱线图的列依次对应y=1,2,3,4)
y_positions = np.arange(1, len(last_row_values)+1)

# 绘制红色散点,设置大小和层级确保显示在箱线图上方
plt.scatter(last_row_values, y_positions, color='red', s=100, zorder=5)

# 显示图形
plt.show()

关键说明

  • data.iloc[-1]:快速提取DataFrame最后一行的所有数据
  • y_positions:横向箱线图的每个列在y轴上的位置是从1开始的连续整数,直接用np.arange生成即可
  • zorder=5:确保红点覆盖在箱线图之上,避免被图形元素遮挡

内容的提问来源于stack exchange,提问作者user603535

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:35:28