alt text

Ich habe hier einen matrix plot für eine Tabelle dort sind die Farben in der Spalte bgcolor willkürlich mit 1,2,... betitelt; woraus pgfplots ein Farbschema zu machen scheint.

Wie kann ich ihn zwingen, eigene Farben zu verwenden, etwa solche, die durch ein Schema des Typs

Öffne in Overleaf
scatter/classes={%
R={red!50},
B={blue!50},
S={lightgray}
},

festgelegt sind. In der Spalte bgcolor müssten dann entsprechend Buchstaben R, B und S stehen. Das bekomme ich nicht hin.

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

\begin{document}

\begin{tikzpicture}
\begin{axis}[
enlargelimits=false,
%x = 10mm, y =10mm,  
xtick=data, ytick=data,   % nur xy-Werte aus Tabelle anzeigen
scatter/classes={%
r={red},
b={blue},
s={black},
R={red!50},
B={blue!50},
S={lightgray}
},
]
\addplot[
matrix plot,
nodes near coords, %=\coordindex,
%mark=*,
mesh/cols=3,
point meta=explicit,
%
%visualization depends on={\thisrow{bgcolor} \as \bgcolor},
%point meta=explicit symbolic,
]
table[meta=bgcolor] {
x y bgcolor
1 1 1
2 1 2
3 1 3
1 2 4
2 2 5
3 2 6
};
\end{axis}
\end{tikzpicture}

\end{document}

gefragt 18 Jan, 17:19

cis's gravatar image

cis
7.8k15162257
Akzeptiert: 71%

Also ich bin da wirklich mit meinem Latein am Ende. Der matrix plot aus pgfplot scheint auch der ein anderen Limitierung unterworfen zu sein. Spontane Idee: Falls das zu kompliziert ist, Farben rot/schwarz/blau durch Aliasse r/s/b zu identifizieren (und das kann ich eben nicht einschätzen); könnte man vll. eine colormap erstellen, die 0=black, 1=red, 2=blue setzt; dann könnten in der Tabelle Zahlen stehen bleiben. Das habe ich auch erstmal nicht hinbekommen. Gut wären halt Standardfarben nach Namen wie red!50. rgb usw. überfodert mich.

(19 Jan, 00:23) cis

Ein matrix plot beruecksichtigt den wert von mesh/color input=colormap|explicit|explicit symbolic, wobei der default colormap ist. Sobald Du das auf explicit setzt, kannst Du explizit Farben angeben:

Öffne in Overleaf
\documentclass[border=3pt, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
enlargelimits=false,
xtick=data, ytick=data,   % nur xy-Werte aus Tabelle anzeigen
]
\addplot[
matrix plot,
mesh/cols=3,
mesh/color input=explicit,
]
table[meta=bgcolor] {
x y bgcolor
1 1 color=blue
2 1 color=black
3 1 color=red!50
1 2 color=blue!50
2 2 rgb255=128,128,128
% default color model is 'rgb'
3 2 1,1,0.5 
};
\end{axis}
\end{tikzpicture}

\end{document}

alt text

Die Option mesh/color input=explicit erwartet eine explizit angegebene Farbe der Art <farbmodell>=<werte>, wobei <farbmodell> per default rgb ist, er dann also drei Werte zwischen 0 und 1 erwartet. In obigem Beispiel verwende ich ein paar Standardmodelle. Details findest Du im manual unter mesh/color input=explicit oder matrix plot.

Permanenter link

beantwortet 20 Jan, 06:42

cfeuersaenger's gravatar image

cfeuersaenger
1.2k23

bearbeitet 20 Jan, 06:46

Ah, verstehe. Erläuterung vom Chef, sauber! :)

(20 Jan, 13:39) cis

@cfeuersaenger et. all: Hier mal ein kurzer Hinweis, warum ich in letzter Zeit soviel gefragt habe. Wer Lust hat, kann einfach mal kurz durchscrollen: http://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=233356&post_id=1701430

Oder gleich zu einem Riesenbeispiel:
http://matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=233356&post_id=1701440

Der Code dort ist sicher nicht über jeden Verdacht erhaben (und kann bestimmt noch 'speicherunlastiger' verbessert werden), noch bin ich nicht so sehr der PGFPLOTTER. ;)

(21 Jan, 16:36) cis
1

coole Anwendung! Danke fuer den Link!

(22 Jan, 15:04) cfeuersaenger
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

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:

×255
×51
×5

Frage gestellt: 18 Jan, 17:19

Frage wurde angeschaut: 774 Mal

Zuletzt aktualisiert: 22 Jan, 15:04