Есть два похожих вопроса по этому поводу:
- Отдельные альфа-значения в точечной диаграмме
- Добавить альфа к существующей карте цветов matplotlib
, но ни один из них не решает эту проблему.Мне нужно создать точечную диаграмму с отдельными альфа-значениями (как в вопросе 1.), но мне нужно объединить это с заданной картой цветов (как в вопросе 2.)
Вот что я придумал:
import numpy as np
import matplotlib.pylab as plt
from matplotlib.colors import ListedColormap
x = np.arange(10)
y = np.arange(10)
# These are the colors for my data
z = np.arange(10)
# These are the alpha values for my data
alphas = np.linspace(0.1, 1, 10)
# Color map I want to use
cm = plt.cm.get_cmap('viridis')
# Get the colormap colors for my data
my_cmap = cm(z)
# Set alpha
my_cmap[:, -1] = alphas
# Create new colormap
my_cmap = ListedColormap(my_cmap)
plt.subplot(121)
plt.scatter(x, y, cmap=cm, c=z)
plt.subplot(122)
plt.scatter(x, y, cmap=my_cmap, c=z)
plt.show()
но результат не тот, который я ожидаю:
, где изображение слева - это то, как выглядит график рассеянияиспользуя цветовую карту и без альфа, и график справа - моя попытка добавить отдельные альфы к точкам данных.