- weitgehende 1:1-Übertragung der Python-API, deswegen wird auch auf die [Matplotlib-Dokumentation](https://matplotlib.org/stable/gallery/index.html) verwiesen
plot(x, y, linecolor =:green, bg_inside =:pink, line =:solid, label = "Wasserstand")
```
- [Plots.jl](https://docs.juliaplots.org/latest/) ist konzipiert als ein einheitliches Interface zu verschiedenen _backends_ (Grafikbibliotheken).
> Man kann zu einem anderen _backend_ wechseln und dieselben Plot-Kommandos und -Attribute verwenden.
- Einige _backends_:
- [GR](https://gr-framework.org/)
- PyPlot (d.h., Matplotlib)
- Plotly(JS)
__Im Rest dieses Notebooks wird Plots.jl vorgestellt.__
## einige _backends_
```julia
using Plots
backend() # Anzeige des gewählten backends, GR ist der default
```
```julia
x = 1:30
y = rand(30)
plot(x, y, linecolor =:green, bg_inside =:pink, line =:solid, label = "Wasserstand")
```
```julia
# wir wechseln das backend zu
# plotly/js
plotly()
```
```julia
# dasselbe Plot-Kommando
# das ist interaktiv (zoom in/out, pan),
# 'überlebt' aber leider die PDF-Konvertierung des notebooks nicht
plot(x, y, linecolor =:green, bg_inside =:pink, line =:solid, label = "Wasserstand")
```
```julia
# und noch ein backend
pyplot()
```
```julia
plot(x, y, linecolor =:green, bg_inside =:pink, line =:solid, label = "Wasserstand")
```
```julia
# zurück zu GR als backend
gr()
```
## Plots.jl und recipes
Andere Pakete können die Möglichkeiten von `Plots.jl` erweitern, indem sie _recipes_ für spezielle Plots und Datenstrukturen definieren, siehe [https://docs.juliaplots.org/latest/ecosystem/](https://docs.juliaplots.org/latest/ecosystem/), z.B.:
- `StatsPlots.jl` direktes Plotten von Dataframes, spezielle statistische Plots,...
- `GraphRecipes.jl` [Plotten von Graphstrukturen](https://docs.juliaplots.org/stable/graphrecipes/examples/)
- ...
## Einige Verschönerungen
```julia
using Plots.PlotMeasures # für Angaben in mm, cm,...
using LaTeXStrings # für LaTeX-Konstrukte in Plot-Beschriftungen
using PlotThemes # vorgefertigte Themen
```
```julia
# Liste der Themen
keys(PlotThemes._themes)
```
```julia
Plots.showtheme(:juno)
```
```julia
Plots.showtheme(:dao)
```
```julia
# so legt man ein Thema für die folgenden Plots fest:
theme(:dao)
# Wir wollen es wieder langweilig haben...
theme(:default)
```
## Funktionen in Plots.jl
```
plot()
scatter()
contour()
heatmap()
histogram()
bar()
plot3d()
... und weitere
```
Diese Funktionen erzeugen ein neues `Plot`-Objekt.
Die Varianten mit Ausrufezeichen `plot!(), scatter!(),...` modifizieren das letzte `Plot`-Objekt oder das `Plot`-Objekt, das ihnen als 1. Argument übergeben wird:
```julia
x = range(0,10, length=40) # 40 x-Werte von 0 bis 10