Plotly pro interaktivní vizualizaci

Plotly

Plotly je sada produktů pro interaktivní vizualizaci dat ve web prostředí. Grafy v Plotly jde tvořit v několika jazycích, my si samozřejmě ukážeme Python API.

Instalace v KFE Unix učebně

Vytvoříme si vlastní nové virtuální prostředí, do kterého nainstalujeme plotly a plotly.express. Kvůli rychlosti ho na Unix stanicích vytvoříme v adresáři /tmp:

source ~jurban/bin/useanaconda.sh

conda create -p /tmp/plotting -c conda-forge python jupyter plotly plotly_express
conda activate /tmp/plotting
jupyter notebook

Jinde můžete prostředí vytvořit standartně pomocí -n přepínače:

conda create -n plotting -c conda-forge python jupyter plotly plotly_express
conda activate plotting
jupyter notebook

Anebo prostě nainstalovat do aktivního prostředí pomocí

conda install plotly

případně

python -m pip install plotly
In [1]:
import plotly.graph_objects as go
import numpy as np
In [2]:
x = np.linspace(0, 4 * np.pi, 1_000)

fig = go.Figure(
    data=[go.Scatter(x=x, y=np.sin(x), name="sin(x)"), go.Scatter(x=x, y=np.cos(x), name="cos(x)")],
    layout=go.Layout(title=go.layout.Title(text="Goniomentrické funkce")),
)

fig.show()

Pomocí plotly.express můžeme velice jednoduše bohatě vizualizovat data.

In [3]:
import plotly.express as px

Obsahuje některé otovřené datové sady, např. z https://www.gapminder.org/

In [4]:
gapminder = px.data.gapminder()

Takto dostaneme data za jeden rok. Používá se knihovna Pandas, o které si povíme více později.

In [5]:
gapminder.query("year==2007").head()
Out[5]:
country continent year lifeExp pop gdpPercap iso_alpha iso_num
11 Afghanistan Asia 2007 43.828 31889923 974.580338 AFG 4
23 Albania Europe 2007 76.423 3600523 5937.029526 ALB 8
35 Algeria Africa 2007 72.301 33333216 6223.367465 DZA 12
47 Angola Africa 2007 42.731 12420476 4797.231267 AGO 24
59 Argentina Americas 2007 75.320 40301927 12779.379640 ARG 32
In [6]:
fig = px.scatter(gapminder.query("year==2007"), x="gdpPercap", y="lifeExp", size="pop", color="continent",
           hover_name="country", log_x=True, size_max=60)
fig.show()
In [ ]:
 

Komentáře

Comments powered by Disqus