pgfplots gibt sich sehr viel Mühe, ein Farbschema festzulegen. Ich möchte/muss das selbst machen.

Ich denke, es sind nur ein paar triviale Einstellungen, die hier fehlen.


Ich habe hier eine Beispielabelle (diese könnte auch mehr Zeilen haben)

Öffne in Overleaf
table[]  {
x y   Z N color bgcolor
1 1   1 4 r       R
1 2   2 3 s       S
2 1   3 2 b      B
2 2   4 1 b       R
};

und möchte daraus einen matrix plot machen.

  • Klappt soweit: Die Spalten Z und N sollen zum Zähler/Nenner eines Bruches werden.

  • Klappt noch nicht: Die Spalte color soll die Textfarbe festlegen, etwa nach dem Schema \tikzset{TextFarben/.style={r/.style={red}, b/.style={blue}, s/.style={black} }}

  • Klappt auch noch nicht: Die Spalte bgcolor soll die Hintegrundfarbe festlegen, etwa nach dem Schema \tikzset{HintergrundFarben/.style={R/.style={red!50}, B/.style={blue!50}, S/.style={black!50} }}

Also ich komme so weit:

alt text

(wobei die Brüche noch nicht 100% richtig gefärbt sind)

Was muss ich ändern, um einen richtigen matrix plot zu erhalten?

PS: Falls jmd. Einsparungsmöglichkeiten sieht immer gern. Z.B. dreimal *\pgfmathprintnumber[precision=0]*, zweimal *visualization depends on* (anders ging es nicht). Nur die Brüche sollte man pgfplots nicht selbst darstellen lassen, weil sonst Probleme/Fehler aufkommen (die Tabelle kann mitunter sehr große Zahlen enthalten). Die Zahlen in der Tabelle stammen aus Mathematica.

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
 \pgfplotsset{width=7cm,compat=1.13}
\begin{document}

% pgfplots.pdf, S. 115
\pgfplotsset{ZahlenAnzeigen/.style={
%TextFarben, 
nodes near coords*={ 
\pgfmathsetmacro{\Nenner}{int(\nenner)}
\ifnum\Nenner=1
    $\textcolor{red}{\pgfmathprintnumber[precision=0]\zaehler}$%
\else
    ${\frac{\pgfmathprintnumber[precision=0]\zaehler}
    {\pgfmathprintnumber[precision=0]\nenner}}$%
\fi},
every node near coord/.append style={xshift=0pt,yshift=-7pt,  font=\footnotesize}
}}

\tikzset{TextFarben/.style={
r/.style={red},  b/.style={blue}, s/.style={black}
}}

\tikzset{HintergrundFarben/.style={
R/.style={red!50},  B/.style={blue!50}, S/.style={black!50}
}}

\begin{tikzpicture}
\begin{axis}[enlargelimits=0.2]
\addplot[matrix plot,
%mark=*,
only marks,  % ohne das geht es nicht
%point meta=\thisrow{color},
ZahlenAnzeigen,
visualization depends on={\thisrow{Z}  \as \zaehler},
visualization depends on={\thisrow{N}  \as \nenner},
]
table[]  {
x y   Z N color bgcolor
1 1   1 4 b       B
1 2   2 3 s       S
2 1   3 2 b      B
2 2   4 1 r       R
};
\end{axis}
\end{tikzpicture}

\end{document}

gefragt 17 Jan '18, 22:36

cis's gravatar image

cis
9.4k23240445
Akzeptiert-Rate: 29%

geschlossen 18 Jan '18, 23:11

Die Frage wurde aus folgenden Grund "Zu subjektiv oder zu sehr diskutierend. Versuche auf kleinere Fragen runterzubrechen." geschlossen cis 18 Jan '18, 23:11

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×279
×56
×5

gestellte Frage: 17 Jan '18, 22:36

Frage wurde gesehen: 1,262 Mal

zuletzt geändert: 18 Jan '18, 23:11