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, 16:36

cis's gravatar image

cis
7.3k14156249
Akzeptiert: 72%

geschlossen 18 Jan, 17:11

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

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×234
×50
×4

Frage gestellt: 17 Jan, 16:36

Frage wurde angeschaut: 348 Mal

Zuletzt aktualisiert: 18 Jan, 17:11