如何在 matplotlib.pyplot 中手动定位一个子图
How to manually position one subplot graph in matplotlib.pyplot
如何重新定位第二行中的图形,使其相对于整个图形居中对齐。更笼统地说,如何手动将图形重新定位在同一行中的任何位置?
import matplotlib.pyplot as plt
m=0
for i in range(0,2):
for j in range(0,2):
if m <= 2:
ax = plt.subplot2grid((2,2), (i,j))
ax.plot(range(0,10),range(0,10))
m = m+1
plt.show()
谢谢。
如果你把它填满底部呢?
您可以使用 colspan
(或 rowspan
)来占据子图的多个部分。
import matplotlib.pyplot as plt
m=0
for i in range(0,2):
for j in range(0,2):
if m <= 2:
if m == 2:
ax = plt.subplot2grid((2,2), (i,j), colspan=2)
else:
ax = plt.subplot2grid((2,2), (i,j))
ax.plot(range(0,10),range(0,10))
m = m+1
plt.show()
使用GridSpec,您可以创建可用于子图放置的任意维度的网格。
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
gs = gridspec.GridSpec(4, 4)
ax1 = plt.subplot(gs[:2, :2])
ax1.plot(range(0,10), range(0,10))
ax2 = plt.subplot(gs[:2, 2:])
ax2.plot(range(0,10), range(0,10))
ax3 = plt.subplot(gs[2:4, 1:3])
ax3.plot(range(0,10), range(0,10))
plt.show()
这将创建一个 4x4 网格,每个子图占用一个 2x2 sub-grid。这使您可以正确地将底部子图居中。
要使用您在问题中使用的相同 for
循环方法,您可以执行以下操作:
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
gs = gridspec.GridSpec(4, 4)
m = 0
for i in range(0, 4, 2):
for j in range(0, 4, 2):
if m < 3:
ax = plt.subplot(gs[i:i+2, j:j+2])
ax.plot(range(0, 10), range(0, 10))
m+=1
else:
ax = plt.subplot(gs[i:i+2, 1:3])
ax.plot(range(0, 10), range(0, 10))
plt.show()
这两个代码片段的结果是:
如何重新定位第二行中的图形,使其相对于整个图形居中对齐。更笼统地说,如何手动将图形重新定位在同一行中的任何位置?
import matplotlib.pyplot as plt
m=0
for i in range(0,2):
for j in range(0,2):
if m <= 2:
ax = plt.subplot2grid((2,2), (i,j))
ax.plot(range(0,10),range(0,10))
m = m+1
plt.show()
谢谢。
如果你把它填满底部呢?
您可以使用 colspan
(或 rowspan
)来占据子图的多个部分。
import matplotlib.pyplot as plt
m=0
for i in range(0,2):
for j in range(0,2):
if m <= 2:
if m == 2:
ax = plt.subplot2grid((2,2), (i,j), colspan=2)
else:
ax = plt.subplot2grid((2,2), (i,j))
ax.plot(range(0,10),range(0,10))
m = m+1
plt.show()
使用GridSpec,您可以创建可用于子图放置的任意维度的网格。
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
gs = gridspec.GridSpec(4, 4)
ax1 = plt.subplot(gs[:2, :2])
ax1.plot(range(0,10), range(0,10))
ax2 = plt.subplot(gs[:2, 2:])
ax2.plot(range(0,10), range(0,10))
ax3 = plt.subplot(gs[2:4, 1:3])
ax3.plot(range(0,10), range(0,10))
plt.show()
这将创建一个 4x4 网格,每个子图占用一个 2x2 sub-grid。这使您可以正确地将底部子图居中。
要使用您在问题中使用的相同 for
循环方法,您可以执行以下操作:
import matplotlib.gridspec as gridspec
import matplotlib.pyplot as plt
gs = gridspec.GridSpec(4, 4)
m = 0
for i in range(0, 4, 2):
for j in range(0, 4, 2):
if m < 3:
ax = plt.subplot(gs[i:i+2, j:j+2])
ax.plot(range(0, 10), range(0, 10))
m+=1
else:
ax = plt.subplot(gs[i:i+2, 1:3])
ax.plot(range(0, 10), range(0, 10))
plt.show()
这两个代码片段的结果是: