matplotlib pyplot pcolor savefig прозрачность панели цветов - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь экспортировать pcolor рисунок с цветовой шкалой. Карта цвета имеет прозрачный цвет. Экспортируемая фигура имеет прозрачные цвета на осях, но не на цветовой шкале. Как я могу это исправить?

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

x = np.random.random((10, 10))
colors = [(0,0,0,0), (0,0,0,1)]
cm = LinearSegmentedColormap.from_list('custom', colors, N=256, gamma=0)
plt.pcolor(x,cmap=cm)
plt.colorbar()
plt.savefig('figure.pdf',transparent=True)

Я проверю изображение на сером фоне. Как видно, карта на осях прозрачна, а карта цветов - нет.

I put the image against a grey background to check. As can be seen, the cmap in the axes is transparent while the one in the colorbar is not

1 Ответ

0 голосов
/ 07 ноября 2018

Пока цветовая полоса находится внутри осей, с ней связан дополнительный фоновый патч. По умолчанию он белый и не будет учитываться, если transparent=True используется внутри savefig.

Поэтому решение состоит в том, чтобы удалить цвет лица этого патча вручную,

cb.patch.set_facecolor("none")

Полный пример, который показывает это без фактического сохранения рисунка

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

x = np.random.random((10, 10))
colors = [(1,1,1,0), (0,0,0,1)]
cm = LinearSegmentedColormap.from_list('custom', colors, N=256, gamma=0)

fig, ax = plt.subplots(facecolor="grey")

im = ax.pcolor(x,cmap=cm)
cb = fig.colorbar(im, drawedges=False)

ax.set_facecolor("none")
cb.patch.set_facecolor("none")

plt.show()

enter image description here

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