我希望在左右 y 轴上都有相应的刻度线。但是,我希望左侧 y 轴刻度位于轴外部,右侧 y 轴刻度位于轴内部。
我拥有的:
import matplotlib.pyplot as plt
ax = plt.subplot(1,1,1)
ax.tick_params(axis='y',which='both',direction='in',right=True)
Run Code Online (Sandbox Code Playgroud)
有没有办法让它ax.tick_params()只在右轴上工作?
实际上,轴两侧的刻度是相同的,因此不能仅更改轴一侧的刻度。
除了@Sheldore 的答案之外,人们可能还想共享双轴,否则双方都会不同步。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.tick_params(axis="y", direction='in', length=8)
ax2 = ax.twinx()
ax2.tick_params(direction="out", right=True, length=8)
ax2.get_shared_y_axes().join(ax,ax2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
Matplotlib 3.1 引入了辅助轴。这在许多情况下非常有用,以前需要滥用双轴,如上所述。优点是不需要进一步的参数,就会自动同步。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.tick_params(axis="y", direction='in', length=8)
ax2 = ax.secondary_yaxis("right")
ax2.tick_params(axis="y", direction="out", length=8)
plt.show()
Run Code Online (Sandbox Code Playgroud)
两种情况下的输出是相同的: