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

技术问题:如何镜像图形,将X轴(-200 -100 0 100 200)转为(200 100 0 100 200)?

实现X轴镜像刻度的两种方法

你的需求是将X轴刻度从(-200, -100, 0, 100, 200)替换为(200, 100, 0, 100, 200),本质是让X轴以0为中心,左右两侧都显示正刻度,结合你的对称图形,有两种简单实现方式:

方法1:修改刻度标签(最快)

因为你的npiez是关于Y轴对称的(计算时用了abs(r)),直接保留原数据,替换X轴的刻度标签即可:

import numpy as np
import matplotlib.pyplot as plt

T = 1400
Q = 1000
R = 1000
h0 = 50

r = np.linspace(-R, R, 500)
s = Q * np.log(R / abs(r)) / (2 * np.pi * T)
npiez = h0 - s

fig, ax = plt.subplots()
ax.plot(r, npiez)

# 设置刻度位置和自定义标签
ax.set_xticks([-200, -100, 0, 100, 200])
ax.set_xticklabels([200, 100, 0, 100, 200])

# 限制X轴显示范围到±200,匹配目标刻度
ax.set_xlim(-200, 200)

plt.show()

方法2:生成对称X数据

如果需要让X轴的实际数值就是从200→0→200,可以重新生成X数据,直接绘制对称图形:

import numpy as np
import matplotlib.pyplot as plt

T = 1400
Q = 1000
R = 1000
h0 = 50

# 生成从200到0再到200的X数据(这里用R=1000,可按需调整)
x = np.concatenate([np.linspace(R, 0, 250), np.linspace(0, R, 250)])
# 计算对应的npiez(X非负,无需abs)
s = Q * np.log(R / x) / (2 * np.pi * T)
npiez = h0 - s

fig, ax = plt.subplots()
ax.plot(x, npiez)

# 设置目标刻度
ax.set_xticks([200, 100, 0, 100, 200])

plt.show()

两种方法都能得到你想要的图形效果,方法1更贴合你的原代码逻辑,无需修改数据生成流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:53:13