[英]Matplotlib: How can I show only exponents in the y tick labels of a semi-log plot with secondary_yaxis()?
我一直在研究 matplotlib 的 secondary-yaxis,我不知道应该如何设置“函数”参数以获得我想要的结果。
我想制作一个半日志 plot 并以以下两种格式设置 y-ticks 的标签:
我想将它们放在左侧 y 轴的前一种样式中,以及右侧的后一种样式中。
我想做的可以通过像这样使用 twinx() 来完成:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 3, 41)
y = 10**x
fig, ax1 = plt.subplots()
ax1.set_yscale('log')
ax1.plot(x, y)
ax2 = ax1.twinx()
ymin, ymax = ax1.get_ylim()
ax2.set_ylim(np.log10(ymin), np.log10(ymax))
plt.show()
你会看到右边 label 中的 i=(1, 2, 3) 与左边 label 中的 10^i 位于同一高度。
但是,我想知道如何通过 secondary_yaxis 做同样的事情。 我已经试过了,但没有用。
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(1, 3, 41)
y = 10**x
fig, ax = plt.subplots()
ax.set_yscale('log')
ax.plot(x, y)
def forward(x):
return np.log10(x)
def backward(x):
return 10**x
secax = ax.secondary_yaxis('right', functions=(forward, backward))
plt.show()
您可以看到右侧刻度标签已损坏。 我怀疑我设置 secondary_yaxis() 参数“功能”的方式可能无效。 如果您能告诉我该怎么做,我将不胜感激。
我在 matplotlib 3.1.0 上得到了破损的数字。 并将其更新到 3.3.0。 已经解决了问题。 与问题的第二个代码块相同的代码生成这个。 在此处输入图像描述
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.