numpy 如何绘制时间序列的逆

yzuktlbb  于 2023-02-19  发布在  其他
关注(0)|答案(2)|浏览(161)

我有一个时间序列,看起来像这样:

import matplotlib.pyplot as plt
import numpy as np

data = [
        0.0320312479743734,
        0.029813902801834047,
        0.029573831125162542,
        0.018995469145011157,
        0.027841876726597548,
        0.041286583291366696,
        0.04001532797701657,
        0.036066913162358105,
        0.05553811206482351,
        0.019244458235334605,
        0.0350094516761601,
        0.025880977045744658,
        0.00444492106908001,
        0.021624276996590197,
        0.024681835202500224,
        0.020811115973629057,
        0.022745881869923323,
        0.03943057672586292,
        0.025860359892249107,
        0.020410736033227295
    ]
plt.plot(data)

在python中,我如何创建这条线的逆坐标并绘制它呢?我所说的逆坐标是指类似这样的东西(请忽略y轴,它应该与第一个相同,但我只是垂直翻转了图像以进行演示):

我并不是指情节中的直线即相反的绝对距离,就像这样:

o4hqfura

o4hqfura1#

不确定是否有一个漂亮的numpy函数可以实现这一点,但是您可以这样做:

inverse = np.array(data)
inverse = inverse.max() - (inverse - inverse.min())
plt.plot(inverse)

覆盖原始数据:

raogr8fs

raogr8fs2#

这里有一个只使用matplotlib的解决方案,所以我们不需要计算另一个数组。
将原始数据绘制两次--第一次为正态分布,第二次在反向的次y轴上:

fig, ax = plt.subplots()

# original data
ax.plot(data, label='Normal')

# original data on inverted secondary y-axis
ax2 = ax.twinx()
ax2.invert_yaxis()
ax2.set_yticks([])
ax2.plot(data, linestyle='--', label='Inverted')

# legend for all axes (fig.legend, not plt.legend)
fig.legend(loc="upper left", bbox_to_anchor=(0, 1), bbox_transform=ax.transAxes)
plt.show()

相关问题