我正在尝试使用 Python 中的 Plotly 创建热图和折线图的模板。我想结合使用这个模板和plotly_white。 但是,将它们组合起来会消除我的热图的色阶颜色。
我在以下函数中定义我的模板
THEME = {
'background_color': '#ffffff',
'font_family': 'Roboto',
'accent_font_family': 'Roboto Slab',
'dark_color': '#2A2B2E',
'pale_color': '#DFD9E2',
'line_chart_color': 'black',
'label_font_size': 14,
'label_background_color': '#ffffff',
'colorscale': 'Bluyl'
}
def create_custom_theme():
pio.templates['mytemplate'] = go.layout.Template(
layout=go.Layout(
font=dict(
family=THEME['font_family']+' , '+ THEME['accent_font_family'],
color=THEME['dark_color']
),
paper_bgcolor=THEME['background_color'],
plot_bgcolor=THEME['background_color'],
hoverlabel=dict(
bgcolor=THEME['label_background_color'],
font=dict(
size=THEME['label_font_size']
)
),
hovermode="closest",
newshape=dict(
line_color=THEME['line_chart_color']
),
colorscale=dict(diverging=THEME['colorscale']),
xaxis=dict(
tickangle=-45
)
)
)
并将其设置为默认值,如下所示
def set_default_theme():
pio.templates.default='mytemplate+plotly_white'
另外,我想知道是否可以在悬停模板中使用模板中定义的两个字体系列。目前,我使用 span 来避免使用模板
def get_heatmap_hover_template():
return ('<span style="font-family: Roboto Slabk"><b>Neighborhood : </b></span>%{y}'
+'<br><span style="font-family: Roboto Slabk"><b>Year : </b></span>%{x}</br>'
+'<span style="font-family: Roboto Slabk"><b>Trees planted : </b></span>%{z}<extra></extra>')
你就快到了。这是你应该做的:
import plotly.io as pio
import plotly.graph_objects as go
THEME = {
'background_color': '#ffffff',
'font_family': 'Roboto',
'accent_font_family': 'Roboto Slab',
'dark_color': '#2A2B2E',
'pale_color': '#DFD9E2',
'line_chart_color': 'black',
'label_font_size': 14,
'label_background_color': '#ffffff',
'colorscale': 'Bluyl'
}
def create_custom_theme():
pio.templates['mytemplate'] = go.layout.Template(
layout=go.Layout(
font=dict(
family=THEME['font_family']+', '+THEME['accent_font_family'],
color=THEME['dark_color']
),
paper_bgcolor=THEME['background_color'],
plot_bgcolor=THEME['background_color'],
hoverlabel=dict(
bgcolor=THEME['label_background_color'],
font=dict(
size=THEME['label_font_size']
)
),
hovermode="closest",
newshape=dict(
line_color=THEME['line_chart_color']
),
coloraxis=dict(
colorscale=THEME['colorscale']
),
xaxis=dict(
tickangle=-45
)
)
)
create_custom_theme()
def set_default_theme():
pio.templates.default = 'mytemplate+plotly_white'
set_default_theme()
def get_heatmap_hover_template():
return ('<span style="font-family: Roboto Slab"><b>Neighborhood : </b></span>%{y}'
+'<br><span style="font-family: Roboto Slab"><b>Year : </b></span>%{x}</br>'
+'<span style="font-family: Roboto Slab"><b>Trees planted : </b></span>%{z}<extra></extra>')
heatmap_data = [
[1, 20, 30],
[20, 1, 60],
[30, 60, 1]
]
line_data = [1, 2, 3, 4, 5]
heatmap = go.Figure(data=go.Heatmap(
z=heatmap_data,
colorscale=THEME['colorscale'],
hovertemplate=get_heatmap_hover_template()
))
line_chart = go.Figure(data=go.Scatter(
y=line_data,
mode='lines',
line=dict(color=THEME['line_chart_color'])
))
heatmap.show()
line_chart.show()
要将自定义模板与
plotly_white
合并,同时保留 colorscale
,您需要确保在合并模板时不会覆盖 colorscale
设置。