一般使用的绘制折线图的代码使用px.line就足够
import plotly.express as px
line_fig = px.line(df, x="period", y="value", color="variable", title="title", markers=True)
或者就是使用go.scatter
import plotly.graph_objects as go
line_fig = go.Figure(data=go.Scatter(x=x_list, y=y_list, mode="lines", name="line1"))
具体可以参考plotly_line-charts
那么如果我同时有几条折线在同一张图中,但我的hovertemplate希望显示同一个时期(x轴)的不同值(y轴),应该如何实现呢
line_fig = px.line(df,x='Period',y=['History','Moving Average','Simple Exponential Smoothing','Holt'],labels=dict(value="Value"))
line_fig.update_traces(hovertemplate='%{y:,.0f}')
line_fig.update_layout(hovermode="x unified",legend_title_text='Variable')
于是可以得到下图
更多的可以移步plotly_hovertext&formatting
接下来就是如何使得绘制的graph在鼠标悬浮在某一条线上时候仅显示悬浮于其上的折现段而隐藏其余线段
line_fig = px.line(df,x='Period',y=['History','Moving Average','Simple Exponential Smoothing','Holt'],labels=dict(value="Value"))
line_fig.update_traces(hovertemplate='%{y:,.0f}')
dcc.Graph(id='detail-fig',figure=line_fig, clear_on_unhover=True)
@app.callback(
Output('detail-fig', 'figure'),
Input('detail-fig', 'hoverData'),
prevent_initial_call=True
)
def display_hover_data(hoverData):
fig = go.Figure(line_fig)
if hoverData != None:
fig.for_each_trace(lambda t: t.update(line_color = 'rgba(140, 43, 226, 0.3)',line_width = 1) if t.name != fig.data[hoverData['points'][0]['curveNumber']].name else dash.no_update)
return fig
else:
return fig
这样就得到了下图
以上就是关于python绘制折线图的一些分享