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

设置matplotlib xticks后X轴仅显示单个刻度问题排查

问题

我用以下代码通过Seaborn绘制训练分数与测试分数随alphas变化的折线图,提供了完整的score_train、score_test和alphas数值用于复现:

alphas = [0.00000000e+00, 3.12213617e-05, 3.41931065e-05, 9.09382510e-05,
       1.42111604e-04, 1.50323881e-04, 2.89300778e-04, 3.20398837e-04,
       3.26079390e-04, 3.67602501e-04, 4.24184679e-04, 4.34481263e-04,
       4.90132981e-04, 5.62078948e-04, 5.85072664e-04, 6.78360178e-04,
       7.93980204e-04, 8.07864745e-04, 9.61382275e-04, 1.29066450e-03,
       1.40562637e-03, 1.46742025e-03, 1.66062768e-03, 1.72203321e-03]

score_train = [0.0104715802718085,
 0.010458280337911519,
 0.010443714475584676,
 0.010443714475584676,
 0.010344437970874143,
 0.010280401760789704,
 0.010280401760789704,
 0.010157163022360027,
 0.009881770880034169,
 0.00988177088003428,
 0.0097251765261126,
 0.009544478827850478,
 0.008756729180697365,
 0.008038412062383204,
 0.008038412062383316,
 0.007789177969584338,
 0.007211231010840424,
 0.006528863850344235,
 0.006528863850344235,
 0.0055695183357952205,
 0.0055695183357952205,
 0.0043456341750442995,
 0.0043456341750444105,
 0.0014375284078337325]

score_test = [-0.013180580298218336,
 -0.013160472761265751,
 -0.013151821204646863,
 -0.013151821204646863,
 -0.013165861122794942,
 -0.013197005960391195,
 -0.013197005960391195,
 -0.013046889005794426,
 -0.013122528043505444,
 -0.013122528043505444,
 -0.013673242248775308,
 -0.013585443618303605,
 -0.01417799133998554,
 -0.014195521870022931,
 -0.01419552187002271,
 -0.009323258408655777,
 -0.0023269067131193033,
 -0.00362963279693429,
 -0.003629632796934512,
 -0.0045420007912404525,
 -0.0045420007912404525,
 -0.0018079981576566428,
 -0.0018079981576566428,
 -0.00034014856624420275]

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

sns.set()
plt.figure(figsize=(14,7))
sns.lineplot(y=score_train,x=alphas,label="Training Score")
sns.lineplot(y=score_test,x=alphas,label="Testing Score")
plt.xticks(ticks=np.arange(0.000000,0.0001,0.001000))
plt.show()

生成的图表X轴仅显示单个刻度,无法看到完整的刻度值,请问哪里操作错误?

解决方法

问题出在plt.xticks(ticks=np.arange(0.000000,0.0001,0.001000))这一行:

  • np.arange(start, stop, step)是左闭右开区间,你设置的start=0,stop=0.0001,但step=0.001,步长远大于区间长度,所以只会生成[0.0]这一个刻度值,导致X轴只显示单个刻度。
  • 另外你的alphas最大值约为0.0017,当前设置的X轴区间(0到0.0001)完全没覆盖数据的主要范围。

修正后的代码如下:

alphas = [0.00000000e+00, 3.12213617e-05, 3.41931065e-05, 9.09382510e-05,
       1.42111604e-04, 1.50323881e-04, 2.89300778e-04, 3.20398837e-04,
       3.26079390e-04, 3.67602501e-04, 4.24184679e-04, 4.34481263e-04,
       4.90132981e-04, 5.62078948e-04, 5.85072664e-04, 6.78360178e-04,
       7.93980204e-04, 8.07864745e-04, 9.61382275e-04, 1.29066450e-03,
       1.40562637e-03, 1.46742025e-03, 1.66062768e-03, 1.72203321e-03]

score_train = [0.0104715802718085,
 0.010458280337911519,
 0.010443714475584676,
 0.010443714475584676,
 0.010344437970874143,
 0.010280401760789704,
 0.010280401760789704,
 0.010157163022360027,
 0.009881770880034169,
 0.00988177088003428,
 0.0097251765261126,
 0.009544478827850478,
 0.008756729180697365,
 0.008038412062383204,
 0.008038412062383316,
 0.007789177969584338,
 0.007211231010840424,
 0.006528863850344235,
 0.006528863850344235,
 0.0055695183357952205,
 0.0055695183357952205,
 0.0043456341750442995,
 0.0043456341750444105,
 0.0014375284078337325]

score_test = [-0.013180580298218336,
 -0.013160472761265751,
 -0.013151821204646863,
 -0.013151821204646863,
 -0.013165861122794942,
 -0.013197005960391195,
 -0.013197005960391195,
 -0.013046889005794426,
 -0.013122528043505444,
 -0.013122528043505444,
 -0.013673242248775308,
 -0.013585443618303605,
 -0.01417799133998554,
 -0.014195521870022931,
 -0.01419552187002271,
 -0.009323258408655777,
 -0.0023269067131193033,
 -0.00362963279693429,
 -0.003629632796934512,
 -0.0045420007912404525,
 -0.0045420007912404525,
 -0.0018079981576566428,
 -0.0018079981576566428,
 -0.00034014856624420275]

import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

sns.set()
plt.figure(figsize=(14,7))
sns.lineplot(y=score_train,x=alphas,label="Training Score")
sns.lineplot(y=score_test,x=alphas,label="Testing Score")

# 修正X轴刻度:覆盖alphas的取值范围,设置合适步长,并旋转刻度避免重叠
plt.xticks(ticks=np.arange(0, 0.002, 0.0002), rotation=45)
# 可选:设置X轴标签格式为科学计数法,更清晰
plt.gca().xaxis.set_major_formatter(plt.FormatStrFormatter('%.5f'))

plt.xlabel('Alphas')
plt.ylabel('Scores')
plt.title('Training vs Testing Scores with Different Alphas')
plt.legend()
plt.show()

关键修改点:

  1. 将np.arange的参数调整为np.arange(0, 0.002, 0.0002),覆盖了alphas的最大值(约0.0017),步长0.0002保证有足够多的刻度。
  2. 添加rotation=45让X轴刻度旋转,避免文字重叠。
  3. 可选添加刻度格式设置,让小数显示更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:57:31