цветовая шкала, использующая значения, которых нет в отображении - PullRequest
0 голосов
/ 21 мая 2018

Я пытаюсь создать фигуру с несколькими сюжетами.Для каждого подзаговора я устанавливаю facecolor.Я хочу предоставить цветную полосу слева, которая дает цвета лица, которые я установил контекст.Тем не менее, единственный способ, которым я понял, как это сделать, включает mapping, который мне там не нужен.

Кроме того, я понимаю, что это может быть вопрос XY.Я открыт для критики и любых методов, чтобы достичь моей конечной цели

[MCVE]

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

np.random.seed([3, 1415])

a = np.random.rand(3, 3)

f, axes = plt.subplots(3, 4)

jet = cm.jet

for i in range(3):
    for j in range(1, 4):
        axes[i, j].set_facecolor(jet(a[i, j-1]))

m = plt.subplot2grid(axes.shape, (0, 0), rowspan=3).imshow(a, jet)
plt.colorbar(m)

enter image description here

Я хочуэто

enter image description here

1 Ответ

0 голосов
/ 21 мая 2018

Цветовая панель должна использовать некоторое отображение между числами и цветами.Однако, если вы не хотите показывать это внутри вашей фигуры, вы можете создать это отображение наиболее общим способом, а именно, используя ScalarMappable экземпляр.

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

np.random.seed([3, 1415])

a = np.random.rand(3, 3)

f, axes = plt.subplots(3, 3)

jet = cm.jet

for i in range(3):
    for j in range(3):
        axes[i, j].set_facecolor(jet(a[i, j]))

m = cm.ScalarMappable(cmap=jet)
m.set_array([])
plt.colorbar(m, ax=axes)

plt.show()

enter image description here

Если в игре нормализация, например, norm = plt.Normalize(-1,2), вы использовали бы ее, чтобы получить правильные цвета как jet(norm(a[i, j])) и создать сопоставляемое как cm.ScalarMappable(cmap=jet, norm=norm).

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