У меня есть две тепловые карты с одинаковыми данными выборки, каждая из которых имеет разные цветовые шкалы:
from plotly import graph_objs as go
import datetime
import numpy as np
np.random.seed(1)
pyo.init_notebook_mode()
programmers = ['Alex','Nicole','Sara','Etienne','Chelsea','Jody','Marianne']
base = datetime.datetime.today()
dates = base - np.arange(180) * datetime.timedelta(days=1)
z1 = np.random.beta(2,2,size=(len(programmers), len(dates)))
z2 = np.random.beta(2,2,size=(len(programmers), len(dates)))
green = '#00c703'
gray = '#d4d4d4'
red = '#c70000'
heatmap = go.Heatmap(
z=z1,
x=dates,
y=programmers,
zmin=0,
zmax=1,
colorscale=[[0,"#00c703"], [0.5,"#d4d4d4"], [1,"#00c703"]]
)
fig = go.Figure()
fig.add_trace(heatmap)
fig.show()
heatmap = go.Heatmap(
z=z,
x=dates,
y=programmers,
zmin=0,
zmax=1,
colorscale=[[0,"#c70000"], [0.5,"#d4d4d4"], [1,"#c70000"]]
)
fig = go.Figure()
fig.add_trace(heatmap)
fig.show()
Для каждой тепловой карты цвет определяется значениями z1.
То, что я хочу сделать, - это тепловая карта, которая учитывает два значения z, z1 и z2. Для каждой комбинации (x, y), если значение z2 выше 0,5, используемая цветовая шкала должна быть зеленой, а окрашивание должно выполняться на основе значений z1 в соответствии с определенной цветовой шкалой. А для окрашивания значений z1 следует использовать красную шкалу красного цвета, если соответствующие значения z2 равны или ниже 0,5.
Таким образом, для значений z1 около 0,5 точка данных на тепловой карте должна быть окрашена в серый цвет, так как это один и тот же цвет для обеих цветовых гамм. А для экстремальных значений z1 вблизи 0 и 1 цвет должен приближаться к красному или зеленому в зависимости от значения z2 для этой точки данных.
Спасибо.