Создание файла PNG из Python и обеспечение прозрачности некоторых ячеек - PullRequest
0 голосов
/ 06 марта 2020

Я использую Python для создания различных карт на сетке из 2D numpy array. Значения: 1 для дороги или 0 для фона.

Я могу экспортировать файл в файл PNG, используя:

matplotlib.image.imsave(filename.png,map_array)

Файл PNG создан, и я могу видеть, например, все дороги в одном цвете (желтый) и фон в другом цвете (фиолетовый). Однако я хотел бы, чтобы все 1s (дороги) были привязаны к указанному c цвету (например, красному), а фон должен быть прозрачным при наложении карты на фолиум.

Как мне сделать нулевые значения полностью прозрачны в PNG и назначают заданный c цвет для 1 с для PNG.

К вашему сведению Я пытался изменить нули на нули (np.NaN), но, похоже, это не работать и просто делает все фиолетовым.

1 Ответ

0 голосов
/ 06 марта 2020

Попробуйте использовать matplotlib.pyplot.savefig() с аргументом transparent=True вместо imsave().

Документация здесь: https://matplotlib.org/3.1.3/api/_as_gen/matplotlib.pyplot.savefig.html

Вот краткий пример, который использует массив 2D numpy в качестве изображения, а nan - прозрачные пиксели

import numpy as np
import matplotlib.pyplot as plt

# create image
image_data = np.random.random((10, 10))

# make some of the values nan. these will be transparent
image_data[3:8, 2:7] = np.nan

# create figure
fig = plt.figure()
plt.imshow(image_data)

# save figure with transparent=True argument
plt.savefig('saved_fig.png', transparent=True)

plt.show()
...