2017-02-18 41 views
1

Предположим, что у меня есть DataFrame, который содержит оболочку Cufflinks (например, this one).Запонки: как установить верхнее и нижнее значение для цветов?

Обычно я рисую его следующим образом. Обратите внимание, что я задал заданную цветовую шкалу по имени «spectral».

heatmap.iplot(kind='heatmap', title='title', colorscale='spectral', xTitle='xTitle', yTitle='yTitle') 

Он показывает мне Heatmap, но диапазон значений colorscale (не цвет, но мин/макс значений в colorscale сопоставлен) является автоматическим решил.

Я хочу, чтобы указать значение min/max, чтобы самый холодный цвет соответствовал минимальному значению, а самый горячий цвет соответствует максимальному значению. Мой вариант использования заключается в том, что у меня есть несколько цветных карт, чтобы сравнить друг с другом, и мне нужно, чтобы они имели одинаковое значение < -> mapcale mapping, так что разница значений в этих картах цветов очевидна из цветов.

BTW, я не хочу вручную указывать все цветовые сопоставления внутри шкалы цветов, так как это означает, что мне нужно сначала выкапывать, как «спектральные» карты масштаба отображают значения для каких цветов.

ответ

2

Короткий ответ: вы не можете сделать это напрямую с cufflinks, потому что zmin и zmax не являются аргументами с ключевыми словами.

Длинный ответ: (? Не так весело, когда два одинаково названные colorscales имеют различные отображения) Преобразование вашего DataFrame просто, но получение такая же цветовая гамма, как cufflinks немного сложнее

df.iplot(kind='heatmap') 

идентичен в

plotly.offline.iplot([go.Heatmap(z=df.transpose().values)]) 

Итак, теперь мы можем установить верхний и нижний диапазон colorscale через zmin и zmax

plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40)]) 

Теперь давайте извлекать colorscale из cufflinks и кормить его в наш Тепловая карта

scale = cf.get_scales()['spectral'] 
l = len(scale) - 1 
spectral = [[i/l, s] for i, s in enumerate(scale)] 

plotly.offline.iplot([go.Heatmap(z=df.transpose().values, 
    zmin=0, 
    zmax=40, 
    colorscale=spectral 
)]) 

Полный код

import cufflinks as cf 
import plotly 
plotly.offline.init_notebook_mode() 
import plotly.graph_objs as go 

cf.go_offline() 
df = cf.datagen.heatmap(20,20) 
df.iplot(kind='heatmap', colorscale='spectral') 

scale = cf.get_scales()['spectral'] 
l = len(scale) - 1 
spectral = [[i/l, s] for i, s in enumerate(scale)] 

plotly.offline.iplot([go.Heatmap(z=df.transpose().values, zmin=0, zmax=40, colorscale=spectral)]) 
+0

Спасибо за время, чтобы написать этот шаг за шагом направляет процесс мышления что очень полезно. Мне нравится, что вы поставили короткий ответ впереди, а затем подробные рассуждения и альтернативу, которые, я считаю, неплохие. Спасибо чувак! – Roy

+0

Рад, что это сработало для вас :) –