python-2.7 - 如何将 matplotlib ax range 设置为正值并围绕某个值进行镜像

标签 python-2.7 matplotlib

我正在尝试在 python 2.7 下使用 matplotlib 2.0 绘制数据和函数。

函数的 x 值随时间变化,x 首先减小到某个值,然后再次增大。

如果函数相对于时间绘制,它会显示类似数据相对于时间的图的函数

plot of data against time

我需要相同的 x 轴演化来针对实际 x 值进行绘图。不幸的是,由于前后两个部分的 x 值相同,因此两个值混合在一起。这给了我错误的数据图:

enter image description here

在此示例中,这意味着我需要 x 轴从值 2.4 开始并减小到 1.0,然后再次增加到 2.4。我发誓我之前就发现这是可能的,但不幸的是我再也找不到关于它的踪迹了。

最佳答案

matplotlib 轴默认呈线性递增。更重要的是,必须存在数轴到轴单位的单射映射。因此,改变数据范围并不是一个真正的选择(至少当目的是让事情变得简单时)。

因此,最好保留原始数字,仅更改轴上的刻度和刻度标签。例如。您可以使用 FuncFormatter 将原始数字映射到

np.abs(x-tp)+tp

其中tp将是转折点。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker

x = np.linspace(-10,20,151)
y = np.exp(-(x-5)**2/19.)

plt.plot(x,y)

tp = 5
fmt = lambda x,pos:"{:g}".format(np.abs(x-tp)+tp)
plt.gca().xaxis.set_major_formatter(matplotlib.ticker.FuncFormatter(fmt))

plt.show()

enter image description here

关于python-2.7 - 如何将 matplotlib ax range 设置为正值并围绕某个值进行镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249170/

相关文章:

python - `python.exe -c ' 没有输出 print ("hello")'`

python - 嵌套列表上某些元素的列表理解

python - Matplotlib:如何向现有颜色条添加标签?

python - Matplotlib 辅助/双轴 - 用圆圈和箭头标记 - 用于黑白 (bw) 发布

python - 从 matplotlib 中的 RGBA 函数创建颜色条

python - matplotlib.patches.FancyArrow 已将尾部变细

python - 虽然我安装了 python-telegram-bot,但没有名为 'telegram' 的模块的错误

python - 如何为 AppInfoExternal 类型的对象解决 "Unexpected attribute ' 分派(dispatch)的 GAE 错误。”

python-2.7 - pygame 仅在鼠标在游戏窗口上处于事件状态时更新?

python - 在 Python Matplotlib 中将图形保存为 eps 时出错