我正在使用matplotlib的辅助轴教程:
fig, ax = plt.subplots()
ax.plot(range(1, 360, 5), range(1, 360, 5))
ax.set_xlabel('frequency [Hz]')
def invert(x):
# 1/x with special treatment of x == 0
x = np.array(x).astype(float)
near_zero = np.isclose(x, 0)
x[near_zero] = np.inf
x[~near_zero] = 1 / x[~near_zero]
return x
ax.set_xlim(left=1,right=360)
ax.set_xticks(np.linspace(0,360,10))
secax = ax.secondary_xaxis('top', functions=(invert, invert))
secax.set_xticks(1/np.linspace(1,360,5))
secax.set_xlabel('Period [s]')
#secax.set_xscale('log')
plt.show()
当我设置slim left=1时,出现以下错误:
ValueError: Axis limits cannot be NaN or Inf
我通过将x_lim改为:
ax.set_xlim(right=360)
右边的图是创建的:
1条答案
按热度按时间bjp0bcyl1#
我不完全确定为什么,但您可以通过将
ax.set_xlim(left=1,right=360)
直接放在plt.show()
之前来修复此错误。显然,这使得计算顶部轴的所有属性变得更加平滑。或者,它可以为底部x轴的左极限选择负值,例如-1。这些极限的默认值是
ax.get_xlim()
-->(-16.75,373.75)。最好的,莎拉