#python #plotly #scatter-plot
#python #plotly #точечный график
Вопрос:
Я определил следующие массивы:
aa=np.random.randn(10)
bb=np.random.randn(10)
cc=['Mean1','Mean2','Mean3','Random1','Random2','Random3','Market1','Market2','Market3','Market4']
srvar=(aa-0.0002)/bb
затем следующий точечный график:
scaplot=go.Figure(
layout=go.Layout(
template='plotly_dark',title_text='Returns (Values in %)',
title_font_family='Droid Sarif',title_font_size=35,title_xref='paper',title_xanchor='center',
title_x=0.5,
xaxis=dict(color='white',title_text='Std. Deviation',title_font_family='Droid Sarif',title_font_size=22
),
yaxis=dict(color='white',title_text='Weekly Returns',
title_font_family='Droid Sarif',title_font_size=22
)
)
)
scaplot.add_trace(go.Scatter(
showlegend=False,mode='markers text',
x=bb*100,
y=aa*100,
hovertext=['{}'.format(round(i*100,2)) for i in srvar],
textfont_size=11,
hovertemplate=
'<i>Return:</i> %{y:.2f}'
'<br><i>Std. Dev.:</i> %{x:.2f}</br>'
'<i>Sharpe R.:</i> %{hovertext} <extra></extra>',
texttemplate=
'<i><b>%{text}</b></i>',
text=['{}{}'.format('' if i[:2] in ['Me','Ma'] else 'Sec: ',i if i[0:2]!='Me' else '') for i in cc],
textposition='bottom center',
marker=dict(
symbol=104,size=13,color=srvar,cmin=np.amin(srvar),cmax=np.amax(srvar),cmid=np.median(srvar),
colorscale='jet',showscale=True,line_width=3,
colorbar=dict(
tickmode='linear',tick0=np.amin(srvar),dtick=(np.amax(srvar)-np.amin(srvar))/5,ticks='outside',
tickfont_family='Droid Serif',tickfont_size=15,tickfont_color='white',
title=dict(
text=
'<i>Sharpe Ratio</i>'
'<br><i>CB</i></br>',
font_family='Droid Sarif',font_size=27,font_color='white'
)
)
)
)
)
pio.show(scaplot)
и все работает отлично, как вы можете видеть на следующем рисунке:
Пока никаких жалоб, НО когда я запускаю следующий код:
scatter_plot.add_trace(go.Scatter(
showlegend=False,mode='markers text',
x=_sd_*100 if (method=='lp' or method=='bootlp') else sd*100,
y=temp*100 if (method=='lp' or method=='bootlp') else mean*100,
hovertext=['{}'.format(round(i*100,2)) for i in sr_var],
textfont_size=11,
hovertemplate=
'<i>Return:</i> %{y:.2f}'
'<br><i>Std. Dev.:</i> %{x:.2f}</br>'
'<i>Sharpe R.:</i> %{hovertext} <extra></extra>',
texttemplate=
'<i><b>%{text}</b></i>',
text=['{}{}'.format('' if i[:2] in ['Me','Ma'] else 'Sec: ',i if i[0:2]!='Me' else '') for i in dfc] if (method=='lp' or method=='bootlp') else [''],
textposition='bottom center',
marker=dict(
symbol=104,size=13,color=sr_var,
cmin=np.amin(sr_var),cmax=np.amax(sr_var),cmid=np.median(sr_var),
colorscale='jet',showscale=True,
colorbar=dict(
tickmode='linear',tick0=np.amin(sr_var),dtick=(np.amax(sr_var)-np.amin(sr_var))/5,ticks='outside',
tickfont_family='Droid Serif',tickfont_size=15,tickfont_color='white',
title=dict(
text=
'<i>Sharpe Ratio</i>'
'<br><i>CB</i></br>'
,font_family='Droid Sarif',font_size=27,font_color='white'
)
)
)
)
)
pio.show(scatter_plot)
(метод — это только одна переменная str, которая является вводом и указывает, какой метод нужен пользователю, если lp bootlp или другие …)
Я получаю этот беспорядок:
Как вы можете видеть, hovertext не работает, текст работает для некоторых, но перезаписал переменную%{text}, цвет всех меток черный, несмотря на то, что цветная панель показывает масштаб… так что я не знаю, почему это происходит. Кто-нибудь может объяснить, чего мне не хватает? Я пробовал много разных вещей и всегда один и тот же результат. Я был бы признателен за ваше время и преданность делу.