Python Matplot Y轴负值到正值的标签范围。

问题描述 投票:0回答:1

我试图用5个整数增量,在-20到+20的序列中创建y轴标签。我试过下面这个,我的图轴=ax2。

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

我得到了一个从20到20的y轴,看起来像下面这个图。

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

我需要y轴的标签在图上显示为: -20, -15, -10, -5, 0, 5, 10, 15, 20 我还没有在网上找到解决方案。在这里谢谢大家的帮助!

matplotlib label deviation
1个回答
1
投票

你使用的是 abs 它总是返回一个正数。因此,你不会看到负的ticklabels。此外,您不需要理解列表,也不需要转换为 rangelist. 你也可以直接使用一个变量,而不是调用 range() 两次。

只要把 abs 并通过 range 直接。事实上,对于你现在的例子,你甚至不需要设置y-ticklabels。只要设置ticks就足够了。

比如说

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
投票

这对你来说有用吗?

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()

Plots:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.