Plotly:具有共享 y 轴的多个 x 轴
Plotly: Multiple x-axes with shared y-axis
我有以下数据框:
df = pd.DataFrame(data={'day': [1,2,3,4,5], 'date': pd.date_range("2020-01-01", periods=5, freq="D"), 'value': [43,45,52,55,63]})
在我的情节中,我希望“值”列是唯一的 y 轴,但同时将“天”和“日期”列作为 X 轴。
我的常规情节是这样的:
fig = px.line(df, x='day', y='value')
fig.show()
Plotly 不支持以下内容:
fig = px.line(df, x=['day', 'date'], y='value')
如何将星期和日期同时显示为 x 轴,一个在另一个下方,一个在顶部,一个在底部?
您可以使用 plotly.graph_objects
并将 xaxis
类型设置为 multicategory
:
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame(data={'day': [1,2,3,4,5], 'date': pd.date_range('2020-01-01', periods=5, freq='D'), 'value': [43,45,52,55,63]})
data = go.Scatter(
x=[df['date'], df['day']],
y=df['value'],
mode='lines'
)
layout = dict(
xaxis=dict(
type='multicategory',
tickfont=dict(
size=7
)
),
yaxis=dict(
tickfont=dict(
size=7
)
),
margin=dict(t=20, l=20, r=20, b=20),
height=300,
width=600
)
fig = go.Figure(data=data, layout=layout)
fig.write_image('fig.png')
您可以使用文本注释功能doc
fig = px.line(df, x="day", y="value", text=df.date)
fig.update_traces(texttemplate='%{text|%d/%m/%Y}', textposition='bottom center')
fig.show()
这给你:
如果您只想每 delta
步有一个日期:
delta = 3
fig = px.line(df, x="day", y="value", text=[str(df.date[i].strftime("%d/%m/%Y")) if i % delta == 0 else "" for i in range(len(df))])
fig.update_traces(textposition='bottom center')
fig.show()
给你:
我有以下数据框:
df = pd.DataFrame(data={'day': [1,2,3,4,5], 'date': pd.date_range("2020-01-01", periods=5, freq="D"), 'value': [43,45,52,55,63]})
在我的情节中,我希望“值”列是唯一的 y 轴,但同时将“天”和“日期”列作为 X 轴。
我的常规情节是这样的:
fig = px.line(df, x='day', y='value')
fig.show()
Plotly 不支持以下内容:
fig = px.line(df, x=['day', 'date'], y='value')
如何将星期和日期同时显示为 x 轴,一个在另一个下方,一个在顶部,一个在底部?
您可以使用 plotly.graph_objects
并将 xaxis
类型设置为 multicategory
:
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame(data={'day': [1,2,3,4,5], 'date': pd.date_range('2020-01-01', periods=5, freq='D'), 'value': [43,45,52,55,63]})
data = go.Scatter(
x=[df['date'], df['day']],
y=df['value'],
mode='lines'
)
layout = dict(
xaxis=dict(
type='multicategory',
tickfont=dict(
size=7
)
),
yaxis=dict(
tickfont=dict(
size=7
)
),
margin=dict(t=20, l=20, r=20, b=20),
height=300,
width=600
)
fig = go.Figure(data=data, layout=layout)
fig.write_image('fig.png')
您可以使用文本注释功能doc
fig = px.line(df, x="day", y="value", text=df.date)
fig.update_traces(texttemplate='%{text|%d/%m/%Y}', textposition='bottom center')
fig.show()
这给你:
如果您只想每 delta
步有一个日期:
delta = 3
fig = px.line(df, x="day", y="value", text=[str(df.date[i].strftime("%d/%m/%Y")) if i % delta == 0 else "" for i in range(len(df))])
fig.update_traces(textposition='bottom center')
fig.show()
给你: