Я создал тепловую карту, используя px.imshow
returns = returns.pivot('year', 'month', 'tradegain').fillna(0)
returns = returns\[\['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\]\]
returns\['Total returns'\] = dayret.groupby(dayret.index.year).tradegain.sum().values
returns = round(returns,2)
fig = px.imshow(returns,text_auto=True,aspect='auto',title=title,color_continuous_scale= px.colors.sequential.BuGn_r)
Я хочу, чтобы отрицательные результаты отображались красным цветом, а все остальное зеленым. Есть ли способ сделать это?
Я также пытался сделать свою собственную цветовую схему
fig = px.imshow(returns,text_auto=True,aspect='auto',title=title,color_continuous_scale=['red','yellow','green','green', 'green','green','green','green','green','green','green','green','green','green','green'])
также с
fig = px.imshow(returns,text_auto=True,aspect='auto',title=title,color_continuous_scale=[[0.0,'Red'],[0.5,'Free ']])
нет хорошего результата
Я хочу, чтобы результат был визуально привлекательным.
Вы должны создать свой собственный colorscale
. Потому что в вопросе нет данных для return
. Я привожу вам пример ниже:
import plotly.express as px
import numpy as np
z = np.array([[.1, .3, .5, .7, -.9],
[1, .8, 60, -10, -.2],
[.2, 0, -.5, .7, .9],
[.9, .8, -.4, .2, 0],
[.3, .4, -.5, .7, 1]])
maxz = np.max(z)+0.1
minz = np.min(z)
colorscale = ["green" if i>=0 else 'red' for i in np.arange(minz,maxz,0.01)]
fig = px.imshow(z, text_auto=True, aspect="auto", color_continuous_scale=colorscale)
fig.show()
Это работает, но i 0 по-прежнему отображается красным, а не зеленым цветом. я пытался заставить все это плавать, но не повезло
@AnirudhBM Играйте с пороговым значением, которое добавляется maxz, вы можете изменить его с 0,1 на 0,01.
может быть, этот ответ или этот ответ поможет сгладить