您好,我做了这个子图,这里的图像分为4列,我的想法是将它们成对比较,即第一列与第二列和第三列与第四列进行比较。但是在这里,它看起来有点混乱。是否可以在第二列和第三列之间添加一条垂直线?这样看来前两列在一起,而其他两对是对吗?有什么可行的方法吗?
drawEarthequake()
我已经添加了如何创建子图的代码。是否有助于回答问题。感谢您的时间。 :)
答案 0 :(得分:3)
添加行就像
一样容易line = plt.Line2D((.5,.5),(.1,.9), color="k", linewidth=3)
fig.add_artist(line)
import matplotlib.pyplot as plt
import numpy as np
a = np.random.rand(10,10,8)
columns = 4
rows = a.shape[2]//columns
fig, axarr = plt.subplots(rows, columns)
fig.subplots_adjust(left=0.1, right=0.9, wspace=0.4)
for i, ax in enumerate(axarr.flat):
img = a[:,:,i]
ax.imshow(img)
ax.set_title("-Patch {}".format(i))
line = plt.Line2D((.5,.5),(.1,.9), color="k", linewidth=3)
fig.add_artist(line)
plt.show()
有关行的更复杂的解决方案,请参见Draw a separator or lines between subplots
但是,潜在地,您可能希望调整图之间的间距。
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
import numpy as np
a = np.random.rand(10,10,8)
columns = 4
rows = a.shape[2]//columns
fig = plt.figure()
axarr1 = fig.subplots(2,2, gridspec_kw=dict(left=0.05, right=0.43, wspace=0.4))
axarr2 = fig.subplots(2,2, gridspec_kw=dict(left=0.57, right=0.95, wspace=0.4))
for i, ax in enumerate(axarr1.flat):
img = a[:,:,i]
ax.imshow(img)
ax.set_title("-Patch {}".format(i))
for i, ax in enumerate(axarr2.flat):
img = a[:,:,i+4]
ax.imshow(img)
ax.set_title("-Patch {}".format(i+4))
plt.show()
这可以在视觉上将两组子图分开,而在图中没有黑线。