以上兩條為測試出來的規律,具體細節尚未細究與驗證
df = df[['datetime', 'v']]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(tickformat="%H:%M\n%Y-%m-%d",)
先看不設定座標軸範圍截斷的圖
中間有大片沒有資料的線,佔據了大量空間,將資料形狀擠壓得看不出來
df = df[['datetime', 'v']]
資料時間序列 = pd.Series(df['datetime'].dt.date.unique())
全量時間序列 = pd.Series(pd.date_range(start=資料時間序列.min(), end=資料時間序列.max(), freq='D').date)
需要刪除時間序列 = 全量時間序列[全量時間序列.isin(資料時間序列) == False].values
需要刪除時間序列 = [i.strftime('%Y-%m-%d') for i in 需要刪除時間序列]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(
tickformat="%H:%M\n%Y-%m-%d",
rangebreaks=[
dict(bounds=[6, 1], pattern='day of week'), # 設定週六週日截斷,規則截斷
dict(values=需要刪除時間序列), # 補充截斷一天中沒有資料的日期,指定日期截斷
dict(bounds=[11.6, 13.4], pattern="hour"), # 空白時間段,時間範圍小於天
dict(bounds=[15.1, 20.9], pattern='hour'), # 空白時間段
dict(bounds=[23.1, 8.9], pattern='hour')] # 空白時間段
)
新增時間截斷後,資料看起來就連貫了很多
df = df[['datetime', 'v']]
資料時間序列 = pd.Series(df['datetime'].dt.date.unique())
全量時間序列 = pd.Series(pd.date_range(start=資料時間序列.min(), end=資料時間序列.max(), freq='D').date)
需要刪除時間序列 = 全量時間序列[全量時間序列.isin(資料時間序列) == False].values
需要刪除時間序列 = [i.strftime('%Y-%m-%d') for i in 需要刪除時間序列]
fig = go.Figure(data=go.Figure(go.Scatter(x=df['datetime'],
y=df['v'],
mode='lines+markers',
line=dict(width=1),
marker=dict(size=1)
)))
fig.update_xaxes(
tickformat="%H:%M\n%Y-%m-%d",
rangebreaks=[
dict(bounds=[11.6, 13.4], pattern="hour"),
dict(bounds=[15.1, 20.9], pattern='hour'),
dict(bounds=[23.1, 8.9], pattern='hour'),
dict(bounds=[6, 1], pattern='day of week'),
dict(values=需要刪除時間序列)
# 按照規則截斷在指定日期截斷後的順序,畫出來的圖是空白
# dict(values=需要刪除時間序列),
# dict(bounds=[6, 1], pattern='day of week'),
],
)
出現座標軸重疊的現象,如下圖
當調整週末程式碼在指定日期的程式碼後面的時候,畫圖甚至是空白的