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

如何修改Seaborn绘图的坐标轴单位以特征距离为基准

实现x轴以特征距离为基准的相对值显示

要把x轴改成相对特征距离的比值,只需要保留原始绝对距离用于函数计算,同时将显示的刻度替换为相对值即可,具体修改步骤如下:

  • 定义特征距离常量(比如你需要的200米)
  • 计算相对距离值,用于设置x轴刻度标签
  • 更新x轴的标签说明,明确显示的是相对比值

修改后的完整代码

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

theta = 0.6
d_mass = 1
energy = 1

L_osc = (4*(np.pi)*energy)/d_mass
osc_constants = d_mass/(4*energy)

# 定义特征距离(这里设为200米,可按需修改)
L0 = 200

def P(x):
    return ((np.sin(2*theta))**2)*((np.sin(osc_constants*x))**2)

def S(x):
    return 1 - P(x)

# 原始绝对距离(用于函数计算)
x_abs = np.linspace(0, 20, 1000)
y1 = P(x_abs)
y2 = S(x_abs)

# 计算相对距离值(用于显示)
x_rel = x_abs / L0

# 构建DataFrame,用相对距离作为索引绘图
df = pd.DataFrame(zip(x_rel, y1, y2), columns=['x_rel', 'Oscillation Probability', 'Survival Probability']).set_index('x_rel')
fig, ax = plt.subplots()

sns.set_palette('Set2')
sns.set_style('ticks')
sns.lineplot(df, ax=ax)

ax.set_title('Oscillation & Survival Probability', size=14)
ax.set_xlim(x_rel.min(), x_rel.max())
ax.set_ylim(0, 1.5)
# 明确x轴含义
ax.set_xlabel(f'Relative Distance (x / {L0}m)')

plt.show()

关键修改说明

  1. 新增L0 = 200定义特征距离,可根据实际需求调整数值
  2. 把原始x重命名为x_abs(绝对距离),确保函数计算逻辑不受影响
  3. 计算x_rel = x_abs / L0得到相对比值,作为绘图的x轴显示值
  4. 修改x轴标签,让读者清晰知道刻度是相对于特征距离的比值

另一种简化方案(不修改DataFrame)

如果不想改动DataFrame结构,可以直接修改轴的刻度标签:

# 保留你原始代码的df(用绝对x作为索引),添加以下代码替换x轴刻度
L0 = 200
ax.set_xlabel(f'Relative Distance (x / {L0}m)')
# 获取当前x轴刻度,替换为相对值
ticks = ax.get_xticks()
ax.set_xticks(ticks)
ax.set_xticklabels([f'{tick/L0:.2f}' for tick in ticks])

两种方式都能实现你要的效果:比如原始x=50对应显示0.25,x=100对应显示0.5等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 19:52:44