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

如何使用Python Seaborn绘制双Y轴散点图

用Seaborn实现双Y轴散点图的方法

Seaborn本身没有直接封装双Y轴的专用接口,结合Matplotlib的twinx()方法即可实现对应样式,以下是完整实现流程:

  • 第一步:导入依赖库
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
  • 第二步:准备数据(示例模拟数据可替换为你的实际数据)
# 构造X轴、两个Y轴的模拟数据
x = np.arange(20)
y1 = np.random.randint(10, 100, size=20) # 第一个Y轴数据,量级更大
y2 = np.random.uniform(0, 5, size=20) # 第二个Y轴数据,量级更小
# 转为DataFrame适配Seaborn的调用规范
df = pd.DataFrame({'x轴字段':x, '指标1':y1, '指标2':y2})
  • 第三步:绘制双Y轴散点图
# 预设Seaborn绘图样式
sns.set_style("whitegrid")
fig, ax1 = plt.subplots(figsize=(10,6))

# 绘制第一个Y轴对应的散点
sns.scatterplot(
    data=df, x='x轴字段', y='指标1', 
    color='#1f77b4', s=80, ax=ax1, label='指标1'
)
# 配置第一个Y轴样式
ax1.set_ylabel('指标1数值', fontsize=12, color='#1f77b4')
ax1.tick_params(axis='y', labelcolor='#1f77b4')
ax1.set_xlabel('X轴数值', fontsize=12)

# 生成第二个Y轴
ax2 = ax1.twinx()
# 绘制第二个Y轴对应的散点
sns.scatterplot(
    data=df, x='x轴字段', y='指标2', 
    color='#ff7f0e', s=80, ax=ax2, label='指标2'
)
# 配置第二个Y轴样式
ax2.set_ylabel('指标2数值', fontsize=12, color='#ff7f0e')
ax2.tick_params(axis='y', labelcolor='#ff7f0e')

# 合并两个轴的图例,避免图例重叠
handles1, labels1 = ax1.get_legend_handles_labels()
handles2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(handles1 + handles2, labels1 + labels2, loc='upper left')

plt.tight_layout()
plt.show()

常用样式调整说明

  • 散点大小、形状:修改sns.scatterplot的s参数调整大小,marker参数调整形状(比如marker='^'用三角标记)
  • 配色调整:修改color参数即可自定义两个系列的散点颜色
  • 刻度范围:分别调用ax1.set_ylim(最小值, 最大值)、ax2.set_ylim(最小值, 最大值)自定义两个Y轴的显示范围
  • 增加拟合线:将sns.scatterplot替换为sns.regplot,保留其他参数即可同时显示散点和拟合趋势线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:45:00