Matplotlib нарисовать линию за пределами участка - PullRequest
0 голосов
/ 31 марта 2020

Для моего эксперимента у меня есть три условия (1, 2 и 3), три образца для каждого условия (A, B и C), три порога для каждого образца (50, 100, 150) и для каждого порога У меня есть два изображения (необработанное изображение и пороговое изображение) => итого 3 * 3 * 3 * 2 = 54 изображения в общей сложности.

Вот код, который показывает их на рисунке:

import matplotlib.pyplot as plt
import mahotas as mh
import numpy as np

fig = plt.figure(figsize=(9,16))

x_start_init = -0
x_stop_init = -0.66

cells = ['A', 'B', 'C']

thresholds = [50,100,150]

for detection in thresholds:

    lena = mh.demos.load('lena')
    lenag = mh.colors.rgb2grey(lena)

    column_count = 0

    for column in np.linspace(0.15, 0.85, 3):

        cell = 0

        for row in np.linspace(x_start_init, x_stop_init, 3):

            subrow_count = 0

            for subrow in np.linspace(np.linspace(x_start_init, x_stop_init, 3)[cell], 
                                      np.linspace(x_start_init, x_stop_init, 3)[cell]-0.16,2):


                ax = fig.add_axes((column, subrow, 0.3, 0.16))
                ax.tick_params(bottom =False, left = False, labelbottom = False, labelleft = False)

                if column == np.linspace(0.15, 0.85, 3)[0] :

                    lenat = lenag > thresholds[0]

                    if subrow_count == 0:

                        ax.set_ylabel('Cell \n' + str(cells[cell]), rotation = 0, fontsize = 20)
                        ax.yaxis.set_label_coords(-0.13,-0.13)

                        img = lenag

                    else :

                        img = lenat

                elif column == np.linspace(0.15, 0.85, 3)[1]:

                    lenat = lenag > thresholds[1]

                    if subrow_count == 0:

                        img = lenag

                    else :

                        img = lenat

                elif column == np.linspace(0.15, 0.85, 3)[2]:

                    lenat = lenag > thresholds[2]

                    if subrow_count == 0:

                        img = lenag

                    else :

                        img = lenat

                ax.imshow(img)


                subrow_count = subrow_count + 1
            cell =  cell + 1 

    x_start_init = x_stop_init - 0.35
    x_stop_init = x_start_init - 0.66

plt.figtext(0.25, 0.18,'50', fontsize = 20)
plt.figtext(0.60, 0.18,'100', fontsize = 20)
plt.figtext(0.95, 0.18,'150', fontsize = 20)

# x,y = np.array([[-10,-100], [-10,-100]])
# line = Line2D(x, y)
# plt.line(line)


plt.title('Test Lena thresholds:', fontsize = 20, x = -1.33, y = 19)

Я хотел бы нарисовать линию слева от каждых 6 строк, которые относятся к одному и тому же условию. Я устал от Line2D, но он не работает ...

Пожалуйста, не могли бы вы дать мне знать, если у вас есть какие-либо подсказки?

Пожалуйста, ваш!

...