在matplotlib子图之间添加一条垂直线

时间:2018-12-18 17:33:51

标签: python matplotlib

I have this subplots here 您好,我做了这个子图,这里的图像分为4列,我的想法是将它们成对比较,即第一列与第二列和第三列与第四列进行比较。但是在这里,它看起来有点混乱。是否可以在第二列和第三列之间添加一条垂直线?这样看来前两列在一起,而其他两对是对吗?有什么可行的方法吗?

drawEarthequake()

我已经添加了如何创建子图的代码。是否有助于回答问题。感谢您的时间。 :)

如果问题不清楚,我需要这样的行,我在下图的图像编辑器中添加了该行。 Image with line that I need

1 个答案:

答案 0 :(得分:3)

线

添加行就像

一样容易
line = plt.Line2D((.5,.5),(.1,.9), color="k", linewidth=3)
fig.add_artist(line)

enter image description here

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()

这可以在视觉上将两组子图分开,而在图中没有黑线。

enter image description here