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

Matplotlib绘制整数型离散y值散点图时y轴无多余间隔的实现方法

实现方法

无需修改原始DataFrame,可通过映射离散值到连续位置、再自定义y轴刻度的方式实现,完整实现代码如下:

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

# 测试数据,全程使用y为整数的原始df
np.random.seed(432987435)
nofpoints = 160
xval = np.arange(nofpoints)
disc = [ 200, 240, 250, 290 ]
yval = np.random.choice(disc, nofpoints)
cval = np.random.random(nofpoints)
df = pd.DataFrame({'xval': xval, 'yval':yval, 'cval': cval})

# 绘图逻辑
fig = plt.figure(dpi=128, figsize=(12,6))
ax = fig.add_subplot(111)

# 提取排序后的唯一离散y值,建立位置映射
sorted_y = sorted(df['yval'].unique())
y_pos_map = {val: idx for idx, val in enumerate(sorted_y)}
# 生成绘图用的y坐标
draw_y = df['yval'].map(y_pos_map)

# 绘制散点图,c参数可正常绑定你的颜色字段cval
ax.scatter(df['xval'], draw_y, marker='o', facecolor='None', edgecolor='g', c=df['cval'])

# 自定义y轴刻度,显示原始整数值
ax.set_yticks(range(len(sorted_y)))
ax.set_yticklabels(sorted_y)

plt.show()

该方案特性:

  • 完全不需要修改原始DataFrame的字段,y值全程保留整数类型
  • 离散y值按大小自动排序,不会出现顺序混乱问题
  • 所有分类值垂直间距相等,无多余空白区域
  • 不占用颜色映射功能,可正常将颜色绑定其他数值字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 13:45:01