Category Archives: Updates

PGFPlots 1.11 erschienen

Christian Feuersänger hat die Version 1.11 von PGFPlots veröffentlicht. Bereits vor einer Woche, doch bei diesem besonderen Paket ist mir diese Neuigkeit wichtig, daher teile ich sie gern noch hier mit. Schließlich gibt es noch einen Ausblick zu berichten.

Parametric Breather Pseudospherical SurfaceHervorheben möchte ich zwei der neuen Features. Man kann jetzt in trigonometrischen Funktionen Argumente in Radiant angeben, statt nur in Grad. Damit entfällt die Umrechnung durch deg() in Grad, wie vorher mit sin(deg(x)) nötig, wenn x nicht in Grad gegeben war. Entsprechend vereinfacht sich die Eingabe komplexer trigonometrischer Ausdrücke. Man braucht nur einmalig trig format plots=rad als Option anzugeben.

Spherical HarmonicsIm Code zum Bild oben ist es “vorher und nacher” zu sehen, in der Antwort von Christian auf TeXwelt auf die Frage, ob man bei pgfplots von Grad auf Radiant umstellen kann mit der Ankündigung des neuen Features. Oder gleich als Anwendung in einem Minimalbeispiel – hier habe ich auf diese Weise die linksstehende Abbildung (spherical harmonics, für Quantenmechanik) geplottet, die Henri in PSTricks angefragt hatte:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{trig format plots=rad, compat=1.11}
\usepgfplotslibrary{colormaps}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[colormap/violet, hide axis]
    \addplot3[
      surf,
      domain     = 0:pi,
      domain y   = 0:2*pi,
      samples    = 50,
      samples y  = 70,
      z buffer   = sort
   
]
    ( {sin(x)*cos(y)*(sqrt(3/(4*pi))*sin(x)*cos(y))^2},
      {sin(x)*sin(y)*(sqrt(3/(4*pi))*sin(x)*cos(y))^2},
      {cos(x)*(sqrt(3/(4*pi))*sin(x)*cos(y))^2} );
  \end{axis}
\end{tikzpicture}
\end{document
}

NormalverteilungWeiterhin wird das Hinzufügen von zusätzlichen Beschriftungen einfacher. Bislang konnte man sich mit axis cs: auf das Koordinatensystem beziehen, um Linien, Pfeile oder Beschriftungen einzuzeichnen. Das sah beispielsweise so aus, wie in diesem Ausschnitt von Elkes gefüllter Fläche unter einer Normalverteilung:

\draw [dotted] (axis cs:2.698,-4) -- (axis cs:2.698,4.5);
\node at (axis cs:0,1.4) [anchor=east, rotate=90] {50\,\%};

Mit der neuen Version vereinfacht sich das zu

\draw [dotted] (2.698,-4) -- (2.698,4.5);
\node at (0,1.4) [anchor=east, rotate=90] {50\,\%};

Also sparsamer zu schreiben und leichter lesbar, gerade wenn man es (wie beim Elkes Plot) öfter einsetzt.

Der kleine Versions-Sprung bringt weitere Modellpflege, es wurden einige aufgefundene Bugs behoben. So kaum merkliche, dass ich bei intensiver Nutzung nur einen davon bemerkt hatte, der nun auch gleich behoben wurde (mit der units library trat unter Umständen zuviel Weißraum auf – bounding box zu groß). Details zu den Bugfixes kann man in der README-Datei nachlesen.

Zum Ausblick: in einem Kommentar zu Drehtransformation mit pgfplots kündigte Christian an, dass er sich in der Entwicklung von PGFPlots gerade auf Skalierbarkeit und Geschwindigkeit konzentriert, motiviert durch die 3d-Oberflächen-Plots auf TeXwelt. Er hat auch schon einen Prototypen fertig, der das dortige Beispiel mit doppelter Geschwindigkeit übersetzt. Es wird dann ein Lua backend verwendet. Darauf freue ich mich sehr, denn ich erstelle regelmäßig komplexe Plots und übersetze sie vielfach, bis Blickwinkel, Samplingrate, Färbung und mehr Optionen eine bestmögliche Darstellung liefern.

Man kann mit seinem Paketmanager seine PGFPlots-Installation updaten, ansonsten kriegt man die neueste Version auch auf SourceForge und auf CTAN.

Ein Kommentar

PGFPlots 1.10 erschienen

Das bekannte und bewährte auf TikZ basierende Programm Version PGFPlots ist nun in Version 1.10 erschienen. Es bietet eine neuen Möglichkeit, Bereiche zwischen Kurven mit Farben oder Mustern zu füllen. Bisher konntea man gestapelte Plots einsetzen, um solche Füllungen zu erreichen, oder sie selbst programmieren. PGFPlots tut das nun selbst mit Augenmerk auf möglichst wenig benötigte Berechnungs-Zeit.

Es kann in dieser Weise verwendet werden:

  • Die Bibliothek fill between laden:\usepgfplotslibrary{fillbetween}
  • Den Plots einen Namen geben via name path=plot1 etc.
  • Die Füllung hinzufügen, wie z.B.
\addplot fill between[
  of = plot1 and plot2,
  split,
  every even segment/.style = {color1},
  every odd segment/.style  = {color2
},
];

Elke hat auf TeXwelt.de ein vollständiges Beispiel gepostet:

\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10
} % mit writeLaTeX bisher noch nicht möglich
\usepgfplotslibrary{fillbetween}
\usepackage{filecontents}

\begin{filecontents}{plotdata.dat}
-2.5 0.5 -0.5
-1 -1 1
0 0 0
1 1 -1
2.5 -0.5 0.5
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}
  \addplot[name path=plot1,green]table[x index={0}, y index={1}]{plotdata.dat};
  \addplot[name path=plot2,red]table[x index={0}, y index={2}]{plotdata.dat
};
  % Füllung zwischen plots
  \addplot fill between[
    of=plot1 and plot2,
    split, % Segmente berechnen lassen, Zählung beginnt bei 0 (also gerader Zahl)
    every even segment/.style= {green!10}, % Stil für die geraden Segmente
    every odd segment/.style={red!10}, % Stil für die ungeraden Segmente
 ];
\end{axis}
\end{tikzpicture}
\end{document
}
Filled segments between plots

Die neue Version kann von SourceForge sowie von CTAN geladen werden.

 

Schreibe einen Kommentar

TikZ 3.0 ist erschienen

PGF / TikZ 3.0 wurde nun auf CTAN veröffentlicht. Seit einigen Tagen ist es bereits auf SourceForge verfügbar, doch seit dem Upload auf CTAN kann man das Release nun getrost als offiziell bezeichnen und auf TeX Live und MiKTeX mittels der Paketmanager installieren.

TikZ erhielt eine Menge neuer Features, dennoch liegt ein Hauptaugenmerk auf perfekter Rückwärts-Kompatibilität, schließlich sollen alle früher erstellten Grafiken auch mit der neuen Version weiterhin exakt genauso aussehen, wenn sie neu übersetzt werden.

All die Verbesserungen und Änderungen kann man kaum aufzählen, doch ein paar seien hier genannt:

  • Man kann das Erscheinungsbild von Pfeilspitzen nun sogar on-the-fly einstellen. Beliebige Pfeilspitzen können sich nun entlang von Kurven biegen.
  • Es gibt eine Vielzahl an Syntaxverbesserungen: zum Beispiel können nodes sowohl vor als auch hinter Pfaden angegeben werden. Es wurden “kleine Bilder”, eingeführt, pic genannt. Das kann man sich als eine Mischung aus nodes und Bildern vorstellen.
  • Wir können nun Graphen mit einer neuen Syntax angeben, die sich an das GraphViz-Programm anlehnt. Das vereinfacht die Erzeugung von Graphen, vor allem von Bäumen.
  • TikZ besitzt nun ein umfassendes und sehr fähiges System zur automatischen Bestimmung der Positionen von nodes in Graphen. Hierfür wird LuaTeX benötigt.
  • Als Alternative zu PGFPlots bietet pgf/TikZ nun auch Daten-Visualisierung als Teil der Standard-TikZ-Installation, um Plots zu erzeugen. PGFPlots ist zwar ausgereifter, doch dieses neue System zeigt einige neue Ideen.
  • Die Unterstützung für alle Hintergrund-Treiber wurde verbessert. Nun wird dvisvgm unterstützt, womit man direkt aus TeX heraus SVG-Grafiken erzeugen kann.
  • Farben können in verschiedenen Modi überblendet werden.

Hier sind einige Beispiele aus der TikZ Beispiel-Sammlung von TeXample.net, die einige der neuen Features zeigen – einfach draufklicken, um den Code zu sehen, was jeweils nur wenige Zeilen sind, sowie eine Erläuterung:

Venn diagramm with blend mode Venn diagramm mit blend-Modus

Drawing trees with the pic feature Bäume zeichnen mit dem pic-Feature

Drawing a graph using the graphdrawing libraryGraphen mit der graphdrawing-Bibliothek zeichnen
Drawing angles and using quotes Winkel zeichnen, Anführungszeichen verwenden
Drawing angles and using quotes Abgefahrene Pfeile

Schreibe einen Kommentar