[英]Multiple consecutive bar plots with a time slider in Plotly, Python
[英]Plotting consecutive histograms with time slider in Plotly Python
我每天根據數據生成兩個直方圖,一個帶有所需的值,另一個帶有針對不同站點的已達到的值。 我想並排繪制這些直方圖,例如此處Plotly中底部的粉紅色示例(請參閱鏈接以獲取源代碼)。 但是,由於兩個直方圖都是每天生成的,因此我需要在圖表上添加時間滑塊,例如Plotly的底部示例“簡單滑塊” (請參閱鏈接以獲取源代碼)。
我的問題是第一個示例使用
fig = dict(data=data, layout=layout)
plotly.offline.plot(fig, filename='Sine Wave Slider')
繪制直方圖,而使用以下滑塊:
import plotly.graph_objs as go
fig = go.Figure(data=data, layout=layout)
plotly.offline.plot(fig, filename='styled histogram')
我現在(不起作用)的代碼看起來像這樣,在這里我嘗試繪制相同的2個直方圖3次。 如何更改代碼以生成同時使用直方圖(均具有不同的隨機數據)和滑塊的圖形?
import plotly
import plotly.graph_objs as go
import numpy as np
x0 = np.random.randn(500)
x1 = np.random.randn(500)+1
trace1 = go.Histogram(
x=x0,
histnorm='count',
name='control',
autobinx=False,
xbins=dict(
start=-3.5,
end=3.0,
size=0.5
),
marker=dict(
color='#FFD7E9',
),
opacity=0.75
)
trace2 = go.Histogram(
x=x1,
name='experimental',
autobinx=False,
xbins=dict(
start=-2.0,
end=5,
size=0.5
),
marker=dict(
color='#EB89B5'
),
opacity=0.75
)
data = [trace1, trace2]
layout = go.Layout(
title='Sampled Results',
xaxis=dict(
title='Value'
),
yaxis=dict(
title='Count'
),
bargap=0.2,
bargroupgap=0.1
)
steps = []
for i in range(len(trace1)):
step = dict(
method = 'restyle',
args = ['visible', [False] * len(trace1)],
)
step['args'][1][i] = True # Toggle i'th trace to "visible"
steps.append(step)
sliders = [dict(
active = 20,
currentvalue = {"prefix": "Frequency: "},
pad = {"t": 3},
steps = steps
)]
layout = dict(sliders=sliders)
fig = dict(data=data, layout=layout)
plotly.offline.plot(fig, filename='Histogram Slider')
total_days = 3
,奇數是實驗性的,偶數是控制性的)。 visible = day < 1
)。 import plotly
import numpy as np
plotly.offline.init_notebook_mode()
total_days = 3
data = list()
for day in range(total_days):
data.append(plotly.graph_objs.Histogram(
x=np.random.randn(500) + day * 0.5,
histnorm='count',
name='Day {}, control'.format(day),
visible=day < 1
)
)
data.append(plotly.graph_objs.Histogram(
x=np.random.randn(500) + day,
histnorm='count',
name='Day {}, experimental'.format(day),
visible=day < 1
)
)
steps = list()
for i in range(total_days):
step = dict(
method='restyle',
args=['visible', [False] * total_days * 2],
label='Day {}'.format(i)
)
step['args'][1][i * 2] = True
step['args'][1][i * 2 + 1] = True
steps.append(step)
sliders = [dict(
active=0,
steps=steps
)]
layout = dict(sliders=sliders)
fig = dict(data=data, layout=layout)
plotly.offline.iplot(fig)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.