亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

動畫線圖與 python plotly

動畫線圖與 python plotly

慕尼黑8549860 2022-12-27 17:10:58
我有黃金價格數據集,其中第一列是 yyyy-mm-dd 格式的日期,第二列是黃金價格。       2019-12-03    1477.60        2019-12-04    1474.45        2019-12-05    1448.40有什么方法可以用 python plotly 制作動畫線圖,我可以在其中顯示黃金價格隨日期的變化?
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

是的,我給你舉個例子。

效果很花哨,但你并沒有得到太多,因為它是一個二維數據,我可以說你確實在無緣無故地延遲數據顯示。

通常動畫很適合顯示 3 個維度,顯然使用時間作為額外的維度來執行動畫,就像 plotly web 動畫文檔中的第一個例子:https ://plotly.com/python/animations/

import plotly.graph_objects as go

import pandas as pd


# Maybe you needed to display plot in jupyter notebook

import plotly.offline as pyo

pyo.init_notebook_mode()


# Load exmples data

dates = ["2019-12-03", "2019-12-04", "2019-12-05", "2019-12-06",

         "2019-12-07", "2019-12-08", "2019-12-09"]

value_gold = [1477.60, 1474.45, 1448.40, 1447.40, 1444.40, 1449.40, 1441.40]

value_bitcoin = [1577.60, 1564.45, 1568.40, 1537.40, 1584.40, 1529.40, 1571.40]

df = pd.DataFrame(list(zip(dates, value_gold, value_bitcoin)),

                  columns=['date', 'value_gold', 'value_bitcoin'])


# Base plot

fig = go.Figure(

    layout=go.Layout(

        updatemenus=[dict(type="buttons", direction="right", x=0.9, y=1.16), ],

        xaxis=dict(range=["2019-12-02", "2019-12-10"],

                   autorange=False, tickwidth=2,

                   title_text="Time"),

        yaxis=dict(range=[1400, 1600],

                   autorange=False,

                   title_text="Price"),

        title="Gold - Bitcoin prices evolution",

    ))


# Add traces

init = 1


fig.add_trace(

    go.Scatter(x=df.date[:init],

               y=df.value_gold[:init],

               name="Gold",

               visible=True,

               line=dict(color="#33CFA5", dash="dash")))


fig.add_trace(

    go.Scatter(x=df.date[:init],

               y=df.value_bitcoin[:init],

               name="Bitcoin",

               visible=True,

               line=dict(color="#bf00ff", dash="dash")))


# Animation

fig.update(frames=[

    go.Frame(

        data=[

            go.Scatter(x=df.date[:k], y=df.value_gold[:k]),

            go.Scatter(x=df.date[:k], y=df.value_bitcoin[:k])]

    )

    for k in range(init, len(df)+1)])


# Extra Formatting

fig.update_xaxes(ticks="outside", tickwidth=2, tickcolor='white', ticklen=10)

fig.update_yaxes(ticks="outside", tickwidth=2, tickcolor='white', ticklen=1)

fig.update_layout(yaxis_tickformat=',')

fig.update_layout(legend=dict(x=0, y=1.1), legend_orientation="h")


# Buttons

fig.update_layout(

    updatemenus=[

        dict(

            buttons=list([

                dict(label="Play",

                        method="animate",

                    args=[None, {"frame": {"duration": 1000}}]),

                dict(label="Gold",

                    method="update",

                    args=[{"visible": [False, True]},

                          {"showlegend": True}]),

                dict(label="Bitcoin",

                    method="update",

                    args=[{"visible": [True, False]},

                          {"showlegend": True}]),

                dict(label="All",

                    method="update",

                    args=[{"visible": [True, True, True]},

                          {"showlegend": True}]),

            ]))])


fig.show()

https://i.stack.imgur.com/7fiVq.gif


查看完整回答
反對 回復 2022-12-27
  • 1 回答
  • 0 關注
  • 99 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號