Seri waktu dinamis plot python

Tujuan buku catatan ini adalah untuk mengilustrasikan bagaimana Anda dapat membuat alat yang interaktif dan responsif untuk analisis deret waktu gambar dengan menggabungkan Panel

def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
0, beberapa
def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
1 fungsi plot beranotasi dan beberapa HoloViews
def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
2

Ketergantungan

import numpy as np
import pandas as pd
import holoviews as hv
import hvplot.pandas
import panel as pn

hv.extension('bokeh')
pn.extension(sizing_mode="stretch_width")

Data

def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()

Plot

HEIGHT=300

plot_a = ts_data.hvplot(y="a", responsive=True, height=HEIGHT)
plot_b = ts_data.hvplot(y="b", responsive=True, height=HEIGHT)
plot_c = ts_data.hvplot(y="c", responsive=True, height=HEIGHT)

plot_a + plot_b + plot_c
_

def get_image(frame):
    return hv.Image(np.random.normal(size=(100, 100))).opts(height=HEIGHT, responsive=True)

get_image(100)

def get_vline(frame):
    return hv.VLine(frame).opts(color="red")

get_vline(0.5)
_

Aplikasi

Batang

app_bar = pn.Row(
    pn.pane.Markdown("## TimeSeries Image Analysis - POC", style={"color": "white"}, width=500, sizing_mode="fixed", margin=(10,5,10,15)), 
    pn.Spacer(),
    pn.pane.PNG("http://holoviews.org/_static/logo.png", height=50, sizing_mode="fixed", align="center"),
    pn.pane.PNG("https://panel.holoviz.org/_static/logo_horizontal.png", height=50, sizing_mode="fixed", align="center"),
    background="black",
)
app_bar
_

Plot Dinamis

frame_slider = pn.widgets.IntSlider(name="Time", value=25, start=0, end=999)

@pn.depends(frame=frame_slider)
def image(frame):
    return get_image(frame)

@pn.depends(frame=frame_slider)
def vline(frame):
    return get_vline(frame)

vline_dmap = hv.DynamicMap(vline)
img_dmap = hv.DynamicMap(image)

plots = ((plot_a + plot_b + plot_c) * vline_dmap).cols(1)

Tata letak

app = pn.Column(
    app_bar,
    pn.Spacer(height=10),
    frame_slider,
    pn.Row(
        plots,
        pn.Column(
            pn.Spacer(height=20),
            img_dmap,
        ),
    ),
)
app

Anda sekarang siap menyajikan aplikasi kepada pengguna Anda melalui

def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
3

Catatan

Baris

def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
4 sangat penting untuk membuat aplikasi cepat dan responsif. Awalnya
def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
_5 dibuat ulang bersama dengan
def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
6 setiap kali
def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
7 diubah. Itu membuat aplikasi lebih lambat karena harus menghitung ulang dan mentransfer lebih banyak data

Aplikasi

Mari bungkus menjadi template bagus yang dapat disajikan melalui

def make_ts_data(n_timesteps):
    data = pd.DataFrame(
        {
            "a": np.random.normal(size=(n_timesteps,)),
            "b": np.random.normal(size=(n_timesteps,)),
            "c": np.random.normal(size=(n_timesteps,)),
        },
        index=pd.Index(np.arange(n_timesteps), name="time", )
    )
    return data

ts_data = make_ts_data(1000)
ts_data.head()
3

pn.template.FastListTemplate(
    site="Panel", title="Dynamic Timeseries Image Analysis", 
    main=[
        "The purpose of this app is to illustrate how you can **make an interactive and responsive tool for timeseries analysis of images** by combining a Panel `IntSlider`, some `@pn.depends` annotated plotting functions and a few HoloViews `DynamicMap`.",
        *app[2:]]
).servable();

Halaman web ini dihasilkan dari notebook Jupyter dan tidak semua interaktivitas akan berfungsi di situs web ini. Klik kanan untuk mengunduh dan menjalankan secara lokal untuk interaktivitas penuh yang didukung Python

Bagaimana Anda memplot data deret waktu multivarian dengan Python?

Plot beberapa deret waktu .
Argumen peta warna. kapak = df. plot(colormap='Dark2', figsize=(14, 7)) kapak. set_xlabel('Tanggal') kapak. set_ylabel('Volume Produksi (dalam ton)') plt. menunjukkan().
Meningkatkan plot Anda dengan informasi. kapak = df. plot(colormap='Dark2', figsize=(14, 7)).
Plot segi

Bagaimana Anda memplot data deret waktu dengan Python?

Rangkaian Waktu menggunakan sumbu tipe tanggal .
# Menggunakan plotly. mengekspresikan impor plotly. nyatakan sebagai px df = px. .
# Menggunakan graph_objects import plotly. graph_objects as go import pandas as pd df = pd. .
impor plotly. nyatakan sebagai px df = px. .
impor plotly. nyatakan sebagai px df = px. .
import pandas sebagai pd import plotly. nyatakan sebagai px df = px. .
Di [13]

Apa cara terbaik untuk memvisualisasikan data deret waktu Python?

Plot garis biasanya digunakan untuk memvisualisasikan data deret waktu. Dalam plot garis, waktu biasanya berada pada sumbu x dan nilai pengamatan berada pada sumbu y.

Apakah Seaborn memiliki plot interaktif?

Di belakang layar, seaborn menggunakan matplotlib untuk menggambar plotnya. Untuk pekerjaan interaktif, disarankan untuk menggunakan antarmuka Jupyter/IPython dalam mode matplotlib , atau Anda harus memanggil matplotlib. pyplot. show() ketika Anda ingin melihat plotnya.