Добавьте линию вертикали между сюжетами matplotlib - PullRequest
0 голосов
/ 18 декабря 2018

I have this subplots here Здравствуйте, я сделал эти подсюжеты, здесь изображения в 4 столбцах, моя идея состоит в том, чтобы сравнить их в паре из двух, то есть 1-й столбец с 2-м и 3-й счетвёртый.Но здесь это немного сбивает с толку, как это выглядит прямо сейчас.Можно ли как-то добавить вертикальную линию между 2-м и 3-м столбцом ??Так что кажется, что первые два столбца вместе, а два других - пары?Есть ли какой-нибудь возможный способ сделать это?

import matplotlib.pyplot as plt

indexes = [1000,1001]

indexes2 = [1010,1011]
columns = 4
rows = len(indexes)
f, axarr = plt.subplots(rows, columns,figsize=(10,10))
k = 0
for i in range(0, rows):
    axarr[i, 0].set_title(str(indexes[k])+"-Patch 1",fontsize=15)    
    axarr[i, 1].set_title(str(indexes[k])+"-Patch 2",fontsize=15)

    axarr[i, 2].set_title(str(indexes2[k])+"-Patch 1",fontsize=15)    
    axarr[i, 3].set_title(str(indexes2[k])+"-Patch 2",fontsize=15)

    k = k+1
    axarr[i, 0].set_xticks([])
    axarr[i, 1].set_xticks([])
    axarr[i, 0].set_yticks([])
    axarr[i, 1].set_yticks([])

    axarr[i, 2].set_xticks([])
    axarr[i, 3].set_xticks([])
    axarr[i, 2].set_yticks([])
    axarr[i, 3].set_yticks([])

plt.tight_layout()

Я добавил код, как я получил субплоты.Если это полезно в ответе на вопрос.Спасибо за ваше время.:)

Если вопрос не понятен, мне нужна строка, подобная этой, я добавил в редакторе изображений следующее изображение.Image with line that I need

1 Ответ

0 голосов
/ 18 декабря 2018

Линия

Добавление строки так же просто, как

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

Более сложное решение с линиями см. В Нарисуйте разделитель или линии между вспомогательными участками

Пробел

Тем не менее, потенциально вы бы предпочли отрегулировать расстояние между графиками.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...