在matplotlib中翻转绘图

12

我正在使用 matplotlib 创建一个图表。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1);
y = np.sin(x)
plt.plot(x, y)

我能否翻转绘图,将y轴倒置并将所有正数变为负数,负数变为正数?

我知道我可以乘以-1并使用invert_yaxis,但我想知道是否有一种方法可以在不改变值的情况下翻转它。


2
将y轴翻转,使其朝上,在Matlab中是否相关? - Aziz
听起来 plt.plot(x, -y) 正好符合你的需求。你对“更改数值”有什么不喜欢的地方吗? - ali_m
1
我有点难以理解你的问题。一方面,您想更改值(使y轴反转并将所有正值变为负值,反之亦然?),另一方面,您明确不想更改值(我想知道是否有一个翻转它而不改变值的函数)。您能否澄清问题是什么? - hitzg
2个回答

17

请尝试以下函数:

plt.gca().invert_yaxis()

2
使用 plt.ylim 将 y 轴限制从 (-1.1,1.1) 反转为 (1.1,-1.1) 即可解决问题...
x = np.linspace(0, 2*np.pi, 63)
y = np.sin(x)
plt.plot(x, y)  
plt.ylim(1.1,-1.1)

请注意,(1.1,-1.1) 只是比 y.max()y.min() 的值高出和低于10%,以防止 y 轴线与图形框重叠。同时请注意,x =np.arange(0, 5, .1) 没有完整的正弦周期,即2π弧度... 通过使用 x = np.linspace(0, 2*np.pi, 63),可以解决这个小问题,并提供与 np.arange(0, 5, .1) 相同的 len(x)

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