Lorenzov atraktor pomoću Plotly biblioteke za vizualizaciju podataka

Plotly je popularna biblioteka za vizualizaciju podataka u Pythonu koja omogućava interaktivnu, lepu i fleksibilnu izradu grafova i vizualizacija u 2D i 3D prostoru. Plotly se koristi za razne vrste vizualizacija i ima široku primenu u analizi podataka, inženjeringu, nauci, finansijama i mnogim drugim poljima. Evo šta sve Plotly može da uradi:

1. 2D Vizualizacije:

Plotly omogućava pravljenje različitih vrsta 2D grafika:

  • Linijski grafici: Koriste se za prikazivanje promena podataka u vremenu ili odnosu između varijabli.
  • Bar grafici: Koriste se za prikazivanje kategorijskih podataka.
  • Scatter grafici: Prikazuju odnos između dva skupa podataka, često koristeći tačke (u 2D ili 3D prostoru).
  • Histograms: Koriste se za distribuciju podataka.
  • Heatmaps: Vizualizuju 2D podatke u formi boja.
  • Box plotovi: Koriste se za prikazivanje statističkih podataka, poput medijane, kvartila i ekstremnih vrednosti.
  • Pie chartovi: Prikazuju relativne udele u celokupnom skupu podataka.

2. 3D Vizualizacije:

Plotly omogućava napredne 3D vizualizacije, kao što su:

  • 3D scatter grafici: Prikazuju tačke u 3D prostoru, idealni za analizu višedimenzionalnih podataka.
  • 3D surface grafici: Koriste se za prikazivanje 3D površina, često za funkcije sa dve promenljive.
  • 3D bar grafici: Kao bar grafici, ali sa dubinom u 3D prostoru.
  • 3D mesh grafici: Prikazuju mreže koje mogu da se koriste za prikazivanje 3D objekata.

3. Interaktivnost:

  • Plotly omogućava visok nivo interaktivnosti, kao što su zoomovanje, pomerači za promenljive, tooltip (pomoćni tekst) i filtriranje.
  • Možeš da klikneš na tačke, pretražuješ kroz grafove i praviš detaljne analize u realnom vremenu.

4. Statističke Vizualizacije:

  • Višedimenzionalni prikazi: Možete prikazivati složene statističke podatke sa više dimenzija.
  • Distribucije i korelacije: Plotly omogućava vizualizaciju zavisnosti između varijabli, npr. pomoću scatter matrixa ili korelacijskih matrica.

5. Geografske Vizualizacije:

Plotly podržava mapiranje podataka na geografske mape:

  • Karte: Možete kreirati karte zasnovane na podacima, kao što su mape sa tačkama, linijama ili oblastima.
  • Choropleth karte: Vizualizacija podataka na kartama, gde su boje povezane sa vrednostima u određenim područjima.
  • Mape sa markerima: Koriste se za prikazivanje tačaka na mapi, npr. za prikazivanje lokacija ili geolokacijskih podataka.

6. Animacije:

Plotly omogućava pravljenje animacija koje mogu da pokreću promene podataka ili vremena. Ovo se koristi za:

  • Prikazivanje evolucije podataka tokom vremena.
  • Animacija promena u visini, veličini ili boji objekata u 3D prostoru.

7. Prilagodljivost i Stilizacija:

  • Plotly je veoma fleksibilan kada je u pitanju stilizacija i prilagođavanje izgleda grafika. Možete da menjate boje, fontove, veličinu, ivice, linije i sve druge vizuelne elemente.
  • Podržava teme (dark, light, itd.) i možete koristiti custom dizajn za stvaranje potpuno jedinstvenih grafika.

8. Integracija sa drugim alatima:

  • Dash: Plotly se koristi sa Dash bibliotekom za izradu interaktivnih aplikacija u Pythonu. Dash omogućava kreiranje web aplikacija koje koriste Plotly grafike i omogućavaju korisnicima da manipulišu podacima u stvarnom vremenu.
  • Jupyter Notebooks: Plotly se lako integriše sa Jupyter Notebooks, što omogućava korisnicima da kombinuju analize podataka i vizualizaciju u jednoj radnoj okolini.

9. Podrška za Različite Izvore Podataka:

  • Možeš koristiti pandas DataFrame za unos podataka u Plotly, što olakšava rad sa tabelarnim podacima.
  • Podržava CSV, JSON, Excel i mnoge druge formate podataka.

10. Izvoz i Deljenje:

  • Plotly omogućava izvoz grafova u različite formate, kao što su HTML, PNG, JPEG, SVG ili PDF.
  • Takođe omogućava deljenje interaktivnih vizualizacija online putem Plotly servera ili pomoću integracije sa GitHubom.

11. Vizualizacija u Stilu Umjetničkog Prikaza:

  • Možeš koristiti Plotly za stvaranje umetničkih prikaza podataka, kao što su generativna umetnost, interaktivne instalacije i druge kreativne vizualizacije.

12. Prikazivanje Podataka sa Velikim Brojem Tačaka:

  • Plotly je optimizovan za rad sa velikim skupovima podataka i može efikasno prikazivati milione tačaka u grafikonima bez značajnog pada u performansama.

Zaključak:

Plotly je izuzetno moćan alat za vizualizaciju podataka koji se može koristiti u mnogim domenima, od nauke i inženjeringa do umetnosti i analize podataka. Bilo da je u pitanju jednostavan 2D grafikon ili složen 3D model sa animacijama, Plotly nudi alatke koje omogućavaju kreiranje interaktivnih i informativnih prikaza podataka.

pip3 install plotly

Matematička umetnost daje neograničene mogućnosti za istraživanje.

Lorenzov atraktor:

  • Lorenzov sistem koristi set diferencijalnih jednačina koje proizvode haotične, ali veoma estetske rezultate.
  • Generisani podaci (x, y, z) prikazuju atraktor, koji je matematički fascinantan i vizualno impresivan.
  • Vizualizacija koristi plotly za interaktivni 3D prikaz atraktora, sa bojama koje menjaju svoj intenzitet u zavisnosti od vremena.
import numpy as np
import plotly.graph_objects as go

# Parametri Lorenzovog sistema
sigma = 10
rho = 28
beta = 8/3

# Funkcija za Lorenzov sistem
def lorenz(x, y, z, dt=0.01, steps=10000):
    X, Y, Z = np.zeros((steps,)), np.zeros((steps,)), np.zeros((steps,))
    X[0], Y[0], Z[0] = x, y, z
    
    for i in range(1, steps):
        dx = sigma * (Y[i-1] - X[i-1])
        dy = X[i-1] * (rho - Z[i-1]) - Y[i-1]
        dz = X[i-1] * Y[i-1] - beta * Z[i-1]
        
        X[i] = X[i-1] + dx * dt
        Y[i] = Y[i-1] + dy * dt
        Z[i] = Z[i-1] + dz * dt
        
    return X, Y, Z

# Generisanje Lorenzovog atraktora
x, y, z = lorenz(0., 1., 1.05)

# Kreiranje 3D prikaza
fig = go.Figure(data=[go.Scatter3d(
    x=x, y=y, z=z,
    mode='lines',
    line=dict(color=np.linspace(0, 1, len(x)), colorscale='Viridis', width=4)
)])

# Postavke za izgled
fig.update_layout(
    title="Lorenzov Atraktor",
    scene=dict(
        xaxis_title='X',
        yaxis_title='Y',
        zaxis_title='Z'
    ),
    margin=dict(r=0, l=0, b=0, t=40),
    width=800,
    height=800
)

fig.show()

By Abel

Leave a Reply

Your email address will not be published. Required fields are marked *