如何防止pyplot颠倒我的x轴值

4

Signal是一个长度为2048的整数数组。下面显示了该数组的图形。

enter image description here

请注意,速度轴在左侧具有负值,在右侧具有正值。创建速度数组时,它从正数开始,并以负数结束,为什么x轴会反转绘图?如何使其从左到右绘制而不是从右到左?(从正到负而不是从负到正)

谢谢


import numpy.polynomial.polynomial as poly
from scipy import asarray as ar,exp, optimize
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

signal = np.genfromtxt("rawdata/g924310/r_g924310_b1.txt")

for i in range(1,2048,1):
    vel[i] = (1024.5 - i)* 0.137177
signal = np.genfromtxt("rawdata/g924310/r_g924310_b1.txt")

plt.plot(vel,signal,'b+:',label='scan')
plt.legend()
plt.title('1667 MHz (92.4, -31.0) - Antenna Temp v Vel')
plt.xlabel('Velocity')
plt.ylabel('Antenna Temp (K)')
plt.show()

请提供数据或虚构的数据集,其中包含重现您绘图所需的关键特征。请参见此处 - Claus Wilke
2个回答

4

默认情况下,matplotlib会按从小到大的顺序排列坐标轴。您可以通过在Axes对象上调用invert_xaxis来覆盖x轴的默认设置:

from matplotlib import pyplot as plt
import numpy as np
x = np.array([3, 2, 1])
y = np.array([4, 5, 6])
plt.plot(x, y)
ax = plt.gca()
ax.invert_xaxis()
plt.show()

enter image description here


1
你也可以使用 plt.xlim(vel[0], vel[-1]) 直接强制将数组的第一个和最后一个元素作为绘图的起点和终点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接