Python 子图放置
Python subplots placement
这一定是个菜鸟问题,但是,我怎么能有两个子图分别具有图中的 (3/4) 和 (1/4)?或者 4/5 和 1/5
我尝试了 gridspec 和简单的子图,但找不到方法。同时我相信这是可以做到的。
到目前为止,这是我的代码:
import matplotlib.pyplot as plt
def make_ticklabels_invisible(fig):
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
for tl in ax.get_xticklabels() + ax.get_yticklabels():
tl.set_visible(False)
plt.figure(0)
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
plt.suptitle("subplot2grid")
make_ticklabels_invisible(plt.gcf())
plt.show()
ax1 和 ax2 不放在一起也可以。
好吧,看来我没有正确理解 loc 是如何工作的。我设法通过更改这两行来做到这一点:
ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,3), colspan=1, rowspan=4)
而不是我之前的:
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
这是 3/4 和 1/4 的比率。
我不会删除这个问题,稍后会添加对 loc 工作原理的解释,因为它困扰了我一段时间,所以它作为存档存在。
考虑一次定义所有子图的更自然的方式
fig, (ax1, ax2) = plt.subplots(ncols=2, gridspec_kw=dict(width_ratios=[3,1]))
这是使用 gridspec
的以下代码的快捷方式
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
gs = GridSpec(1,2, width_ratios=[3,1])
fig = plt.figure()
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])
这一定是个菜鸟问题,但是,我怎么能有两个子图分别具有图中的 (3/4) 和 (1/4)?或者 4/5 和 1/5
我尝试了 gridspec 和简单的子图,但找不到方法。同时我相信这是可以做到的。
到目前为止,这是我的代码:
import matplotlib.pyplot as plt
def make_ticklabels_invisible(fig):
for i, ax in enumerate(fig.axes):
ax.text(0.5, 0.5, "ax%d" % (i+1), va="center", ha="center")
for tl in ax.get_xticklabels() + ax.get_yticklabels():
tl.set_visible(False)
plt.figure(0)
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
plt.suptitle("subplot2grid")
make_ticklabels_invisible(plt.gcf())
plt.show()
ax1 和 ax2 不放在一起也可以。
好吧,看来我没有正确理解 loc 是如何工作的。我设法通过更改这两行来做到这一点:
ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,3), colspan=1, rowspan=4)
而不是我之前的:
# ax1 = plt.subplot2grid((4,4), (0,0), colspan=3, rowspan=4)
ax2 = plt.subplot2grid((4,4), (0,1), colspan=1, rowspan=4)
这是 3/4 和 1/4 的比率。
我不会删除这个问题,稍后会添加对 loc 工作原理的解释,因为它困扰了我一段时间,所以它作为存档存在。
考虑一次定义所有子图的更自然的方式
fig, (ax1, ax2) = plt.subplots(ncols=2, gridspec_kw=dict(width_ratios=[3,1]))
这是使用 gridspec
的以下代码的快捷方式import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
gs = GridSpec(1,2, width_ratios=[3,1])
fig = plt.figure()
ax1 = fig.add_subplot(gs[0])
ax2 = fig.add_subplot(gs[1])