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

Python中使用seaborn绘制散点图时如何设置x轴仅显示指定刻度

实现方法说明

你要的效果核心是解决两个基础问题:一是原代码存在语法错误无法正常运行,二是K值跨3个数量级的线性坐标会把所有小数值的点挤在坐标轴边缘,完全无法展示分布。全程不需要挪动任何数据点的坐标,仅通过坐标轴配置调整就能达成需求。

第一步:修正原代码的语法错误

  • 补全DataFrame列名定义时缺失的单引号:将columns=['K','Result1,'Result2','Result3']改为columns=['K','Result1','Result2','Result3']
  • 补全plt.xticks()方法的闭合右括号
  • 修正保存文件时的拼写错误,将"reults"改为"results"避免保存失败

第二步:调整坐标轴尺度适配数值范围

直接在代码里加入plt.xscale('log')设置x轴为对数尺度。

注意:这一步仅改变坐标轴的数值映射规则,不会修改任何数据点的实际K值坐标,既可以让跨度极大的K值(0.001到0.5)在图上均匀展开,又能完全保留每个点对应的真实位置关系,符合“保留所有数据点对应坐标位置”的要求。

第三步:自定义x轴的可见刻度

加入两个核心设置:

  • 调用plt.minorticks_off()关闭对数坐标默认生成的细碎次要刻度
  • 调用plt.xticks(ticks=[0.001, 0.01, 0.1], labels=['0.001', '0.01', '0.1']),强制x轴仅显示你指定的三个刻度,隐藏其余所有自动生成的刻度

修正后完整可运行代码

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

Data2 = {'Result1': [0.9679,0.9620,0.9618,0.9697,0.9721,0.9364],
        'Result2': [0.92,0.9162,0.9236,0.9387,0.9306,0.9066],
        'Result3': [0.914,0.9233,0.9334,0.9361,0.9316,0.8944],
        'K': [0.001,0.005,0.01,0.05,0.1,0.5]
       }
  
df2 = pd.DataFrame(Data2,columns=['K','Result1','Result2','Result3'])
sns.set(style='whitegrid')
sns.scatterplot(x='K', y='Result1', data=df2,label="Result1",marker='o',legend=None)
sns.scatterplot(x='K', y='Result2', data=df2,label="Result2",marker='o',legend=None)
sns.scatterplot(x='K', y='Result3', data=df2,label="Result3",marker='o',legend=None)

plt.xlabel(r'$\alpha$', fontsize=14)
plt.ylabel('performance', fontsize=14)
# 设置对数坐标适配宽范围K值
plt.xscale('log')
# 关闭次要细碎刻度
plt.minorticks_off()
# 仅保留指定的三个可见刻度
plt.xticks(ticks=[0.001, 0.01, 0.1], labels=['0.001', '0.01', '0.1'])
plt.subplots_adjust(left=0.1, right=0.8, top=0.7, bottom=0.1)
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.savefig("results",bbox_inches = "tight")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 02:54:00