Python Matplot Y轴从负到正标签范围

时间:2020-06-12 22:29:19

标签: matplotlib label deviation

我正在尝试以-20到+ 20的顺序创建y轴标签,并以5的整数递增。我在下面用绘图轴= ax2尝试过此操作:

ax2.set_yticks(list(range(-20, 25, 5)))
ax2.set_yticklabels([abs(y) for y in list(range(-20, 25, 5))])

我得到的y轴范围是20到20,如下图所示:

figure from my program that needs new axis labels (negative numbers)

我需要y轴标签在图上列出:-20,-15,-10,-5、0、5、10、15、20,但我尚未在线找到解决方案。谢谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您使用的abs总是返回正数。因此,您不会看到否定的滴答标签。此外,您不需要列表理解,也不需要将range转换为list。您也可以只使用一个变量,而不必两次调用range()

只需删除abs并直接传递range。实际上,对于您当前的示例,您甚至不需要设置y-ticklabels。只需设置刻度即可。

例如:

fig, ax2 = plt.subplots()

ytics = range(-20, 25, 5)
ax2.set_yticks(ytics)
ax2.set_yticklabels(ytics); # Remove abs() (Also redundant line in your case)

enter image description here

答案 1 :(得分:2)

这对您有用吗?

ax.set_yticks(np.linspace(-20, 20, 10)) 

最小示例:

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots(1, 1)
ax.set_yticks(np.arange(-20, 25, 5))
plt.show()

图: enter image description here

相关问题