【发布时间】:2022-11-17 01:31:38
【问题描述】:
我有一个包含两条线的折线图。在 x 轴上有时间,在 y 轴上有值。在 y 轴上,我想手动设置刻度之间的空间。
- 我的数据在 0 - 5 范围内非常密集,因此我希望此范围内的刻度彼此远离,以便区分图中绘制的两条线。
- 在 5 - 10 之间,我的数据或多或少具有相同的值,因此这里的刻度可以靠得更近。
- 从 10 到 15 需要再次传播刻度,因为我的数据在这里很密集。
我尝试手动设置刻度值,但这不会添加/删除刻度的空间/高度
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv')
df['Date']=pd.to_datetime(df['Date'])
dfg = df.groupby([pd.Grouper(key='Date', freq='M'), 'direction']).size().to_frame('counts')
dfg.reset_index(inplace=True)
layout = Layout(
title='Foo',
plot_bgcolor='rgba(0,0,0,0)',
yaxis = dict(
tickmode = 'array',
tickvals = [0, 0.5, 1, 1.5, ..., 5, 6, 7, ..., 10.5, 11, 11.5, 12, ...],
)
)
fig = go.Figure()
for d,c in zip(dfg['direction'].unique(), ['red','green']):
dfs = dfg.query('direction == @d')
fig.add_trace(
go.Scatter(
x=dfs['Date'],
y=dfs['counts'],
mode='lines',
line=dict(
color=c,
width=3
),
name=d
)
)
fig.show()
注意:我这里添加的数据不是我的真实数据。这只是一些要处理的数据。
【问题讨论】: