Итерация по сюжетам из matplotlib - PullRequest
2 голосов
/ 21 февраля 2020

Я создаю несколько горизонтальных столбчатых диаграмм на фигуре с использованием вспомогательных участков:

fig, axs = plt.subplots(1, len(kwargs), figsize=figsize, frameon = False)
subplot = 0

    for key, value in kwargs.items():
        leftCordinate = 0

        for i in range(len(value)): ##value=[10,15,20]
            axs[subplot].barh([0], value[i], left = leftCordinate, color=colors[i])
            leftCordinate +=  value[i] 

        axs[subplot].axis('off')
        subplot += 1

Проблема в том, что при len(kwargs)=1 возникает ошибка ниже:

Exception has occurred: TypeError
'AxesSubplot' object is not subscriptable

После исследования Я нашел ниже 3 решения:

  1. fig, axs = plt.subplots(1, len(kwargs), figsize=figsize, frameon = False, squeeze = False)

  2. axs = axs.T.flatten()

  3. if type(axs)!=np.ndarray : # Happens if nrows=ncols=1

      axs = np.array([[axs]])
    

Я перепробовал все, но ни одно из решений не помогло мне. Есть ли другое решение или мне нужно написать отдельный код для моего особого случая len(kwargs)=1?

...