如何在matplotlib的多个子图背景中绘制数据

2024-04-27 20:45:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个数字组成的多个子地块堆叠在一起。不过,我也希望有一个单一的情节,贯穿所有堆叠的子地块,并显示在“后面”他们。我不关心实际的y值,所以在这种情况下y轴是不可读的。以下是我目前的情况:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 100)
y = x
y2 = x**2
y3 = x**3

fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.1, 0.8, 0.4])
ax2 = fig.add_axes([0.1, 0.5, 0.8, 0.4])
ax3 = ax1.twinx()
ax4 = ax2.twinx()


ax1.plot(x, y)
ax2.plot(x, y3)
ax3.plot(x, y2)
ax4.plot(x, y2)

基本上,我想把ax3和ax4合并成一个大的图,显示一个二次函数,同时把一个三次函数叠加在同一个图中的一个线性函数上,我将有三个实际独立的轴,因为我希望在不影响其他两个子批的情况下对一个子批进行自定义和执行操作。enter image description here

谢谢


Tags: 函数importplotasnpfig情况plt
1条回答
网友
1楼 · 发布于 2024-04-27 20:45:40

我想应该是先创建两个子图,一个在另一个子图的下面,将中间的间距减小到0,然后创建一个覆盖整个区域的新子图,并使背景透明。同时将第三个轴的记号和标签放在右边。然后绘制到三个轴中的每一个

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-1, 1, 100)
y = x
y2 = x**2
y3 = x**3

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)
fig.subplots_adjust(hspace=0.0)


ax3 = fig.add_subplot(111, sharex=ax1, label="right axes")

l1, = ax1.plot(x, y, color="C0")
l2, = ax2.plot(x, y3, color="C2")
l3, = ax3.plot(x, y2, color="C3")

ax1.tick_params(axis="y", colors=l1.get_color())
ax2.tick_params(axis="y", colors=l2.get_color())
ax3.set_facecolor("none")
ax3.tick_params(labelbottom=False, bottom=False, labelleft=False, left=False,
                right=True, labelright=True, colors=l3.get_color())

plt.show()

enter image description here

相关问题 更多 >