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, 17:19

cis's gravatar image

cis
8.7k16180289
Akzeptiert: 70%

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

cfeuersaenger's gravatar image

cfeuersaenger
1.2k23

bearbeitet 20 Jan '18, 06:46

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

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

coole Anwendung! Danke fuer den Link!

(22 Jan '18, 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:

×266
×53
×5

Frage gestellt: 18 Jan '18, 17:19

Frage wurde angeschaut: 1,263 Mal

Zuletzt aktualisiert: 22 Jan '18, 15:04