matplotlib 如何限制几个轴中只有一个轴的范围

slmsl1lt  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(163)

代码如下:

fig, ax1 = plt.subplots(figsize=(20, 10))

pds, ns, ss, avgs = polar
ax1.plot(pds, avgs, color="purple", linestyle="-")
ax1.tick_params(axis='y', labelcolor="k")
ax1.set_ylabel("polar field strength")

ax2 = ax1.twinx()

for i, (cmd, ffmd, md, c) in enumerate(zip(cmds, ffmds, mds, cycles)):
    p = ax2.plot(c[0], c[1], label="SC" + str(25 - len(cycles) + i + 1))
    color = p[-1].get_color()
    ax2.axvline(x=cmd, color=color, linestyle=":")
    ax2.axvline(x=md, color=color, linestyle = '--')
    ax2.axvline(x=ffmd, color=color, linestyle = '-')

sc25 = cycles[-1]
p = ax2.plot(sc25[0][:-6], sc25[1][:-6], label="SC25")
color = p[-1].get_color()
ax2.axvline(x=cmds[-1], color=color, linestyle=":")
ax2.tick_params(axis='y', labelcolor="k")
ax2.set_ylabel("SSN")

这将按预期工作,产生以下情节:

然而,我更希望属于ax1的紫色图仅限于轴的一部分,以免不必要地把图弄得乱七八糟。在这种情况下,例如,将整个范围限制在轴的现在由-100到-50覆盖的部分,将紫色图的整个范围放在那里是很好的。有什么建议吗?

zazmityj

zazmityj1#

考虑到紫色图是ax1中唯一的一个,你可以使用y限制,以便将紫色图放置在你想要的位置。例如:

ax1.set_ylim((-300, 500))

您可以更进一步,将y刻度限制在相关范围内。例如:

ax1.set_yticks([-200, -100, 0, 100, 200])

相关问题