我正在尝试在 python 2.7 下使用 matplotlib 2.0 绘制数据和函数。
函数的 x 值随时间变化,x 首先减小到某个值,然后再次增大。
如果函数相对于时间绘制,它会显示类似数据相对于时间的图的函数
我需要相同的 x 轴演化来针对实际 x 值进行绘图。不幸的是,由于前后两个部分的 x 值相同,因此两个值混合在一起。这给了我错误的数据图:
在此示例中,这意味着我需要 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()
关于python-2.7 - 如何将 matplotlib ax range 设置为正值并围绕某个值进行镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47249170/