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 '18, 23:19

cis's gravatar image

cis
9.5k94459491
Akzeptiert-Rate: 29%

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 '18, 06: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 '18, 12:42

cfeuersaenger's gravatar image

cfeuersaenger
3.7k23
Akzeptiert-Rate: 34%

bearbeitet 20 Jan '18, 12:46

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

(20 Jan '18, 19: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 '18, 22:36) cis
1

coole Anwendung! Danke fuer den Link!

(22 Jan '18, 21:04) cfeuersaenger
Deine Antwort
Vorschau umschalten

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:

×298
×58
×6

gestellte Frage: 18 Jan '18, 23:19

Frage wurde gesehen: 6,949 Mal

zuletzt geändert: 22 Jan '18, 21:04