PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Latex dot plot mit Buchstaben



cervejinha
13-09-2017, 18:51
Hallo da draussen,

nach dem ich per Schlagwortsuche nicht fündig geworden bin, wende ich mich mit meiner "Challenge" an euch.
Ich möchte in latex Daten plotten, und zwar sollen auf jedem Inkrement der X-Achse 20 Werte geplottet werden, jeder Wert soll anstatt von einem Punkt oder ähnlichem Marker von einem Buchstaben (1 Buchstabencode der Aminosäuren) repräsentiert werden.
Also auf den 15 Inkrementen entlang der X-Achse werden jeweils 20 Werte geplottet (siehe Beispielbild).
6243

Ich denke was dem Plot am nächsten kommt ist ein dot plot mit pgfplots. Allerdings habe ich bisher nichts gefunden ob oder wie man die typischen Marker (Kreis, Viereck, Diamant ect) gegen andere Zeichen austauschen kann.
Wahrscheinlich suche ich auch in der komplett falschen Richtung.

Über Hinweise und Vorschläge wäre ich sehr dankbar!

rais
15-09-2017, 14:37
wenn ich Dich recht verstehe, schau in `texdoc pgfplots' nach ``mark=text''.

VG

cervejinha
15-09-2017, 15:52
Hallo rais,
vielen Dank für den Tipp. Habe damit direkt einen anderen Beitrag mit Beispiel gefunden an dem ich starten kann (https://tex.stackexchange.com/questions/247768/using-a-character-as-mark-in-pgfplots). (Ich denke mein Fehler war nach "Letter" statt "Character" zu suchen xX)
Falls jemand noch weitere Ideen zu der Aufgabe hat bin ich immer noch interessiert. Hoffe aber bald die Lösung teilen zu können.
VG

cervejinha
15-11-2017, 14:23
So der vollständigkeit halber hier die Lösung zu meinem oben beschriebenen Problem:

Danke rais für den tip mit 'mark=text', das war genau das Richtige!!!!
Und zwar habe ich eine cycle list erstellt, in der ich die option 'mark=text, text mark=A' (für den Buchstaben A) gesetzt habe.

Nach folgend ein (fast) "Minimalbeispiel" des Codes (Ich verwende Group-Plot da ich letztendlich 2x5 dieser Graphen plotte).
Die eingelesene Datei "Data.txt" ist eine tab-separierte Tabelle mit 21 Spalten und 16 Zeilen. Die erste Zeile enthält die Spaltenüberschriften x1 (für die X-Koordinate) und die 20 Buchstaben die der 1-Buchstabenabkürzung der 20 natürlichen Aminosäuren entsprechen (A-Y). Die Marker sind entsprechend der chemischen Eigenschaften der Aminosäuren in rot, grün, orange, gelb und blau eingefärbt.

%Packete (evtl benötigt man gar nicht alle dafür...)
\usepackage{pgfplots,filecontents}
\usepackage{tikzscale}
\usepackage{tikz}
\usepackage{pgfplotstable}
\usetikzlibrary{plotmarks}
\usepgfplotslibrary{groupplots}

%%%% Farben definieren
\definecolor{S3}{RGB}{151,3,14} %rot
\definecolor{S5}{RGB}{72,140,19} %gruen
\definecolor{S2}{RGB}{218,75,15} %orange
\definecolor{S4}{RGB}{233,177,4} %gelb
\definecolor{S1}{RGB}{27, 85, 192} %blau

%%% plot cycle list definieren: farbe und markersymbol
\pgfplotscreateplotcyclelist{Fingerprints}{
{S1, only marks, samples=20, mark=text, text mark=\textbf{A}},
{S2,only marks, samples=20, mark=text,text mark=\textbf{C}},
{S3,only marks, samples=20, mark=text, text mark=\textbf{D}},
{S3,only marks, samples=20, mark=text,text mark=\textbf{E}},
{S4, only marks, samples=20, mark=text, text mark=\textbf{F}},
{S1, only marks, samples=20, mark=text, text mark=\textbf{G}},
{S5, only marks, samples=20, mark=text, text mark=\textbf{H}},
{S1, only marks, samples=20, mark=text, text mark=\textbf{I}},
{S5, only marks, samples=20, mark=text, text mark=\textbf{K}},
{S1, only marks, samples=20, mark=text, text mark=\textbf{L}},
{S1, only marks, samples=20, mark=text, text mark=\textbf{M}},
{S2, only marks, samples=20, mark=text, text mark=\textbf{N}},
{S2, only marks, samples=20, mark=text, text mark=\textbf{P}},
{S2, only marks, samples=20, mark=text, text mark=\textbf{Q}},
{S5, only marks, samples=20, mark=text, text mark=\textbf{R}},
{S2, only marks, samples=20, mark=text, text mark=\textbf{S}},
{S2, only marks, samples=20, mark=text, text mark=\textbf{T}},
{S1, only marks, samples=20, mark=text, text mark=\textbf{V}},
{S4, only marks, samples=20, mark=text, text mark=\textbf{W}},
{S4, only marks, samples=20, mark=text, text mark=\textbf{Y}}
}

%%%% Tabellen einlesen
\pgfplotstableread[col sep=space]{Data.txt}{\Data}

\begin{tikzpicture}
\begin{groupplot}[group style = {group size = 1 by 1 vertical sep=1.3cm},
cycle list name=Fingerprints ,
xtick={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},
xticklabels={I,H,L,V,E,N,E,S,S,E,T,G,A,T,N},
height = 3.9cm, width = 7.5cm]

\nextgroupplot[ title=1,
ymin=0.3,
ymax=1.5,
ytick={0.6,1,1.5},
ylabel=Normalized mean intensity /\%,
xlabel=Amino acid sequence]

\addplot+ table [y=A, x=x1] from \Data;
\addplot+ table [y=C, x=x1] from \Data;
\addplot+ table [y=D, x=x1] from \Data;
\addplot+ table [y=E, x=x1] from \Data;
\addplot+ table [y=F, x=x1] from \Data;
\addplot+ table [y=G, x=x1] from \Data;
\addplot+ table [y=H, x=x1] from \Data;
\addplot+ table [y=I, x=x1] from \Data;
\addplot+ table [y=K, x=x1] from \Data;
\addplot+ table [y=L, x=x1] from \Data;
\addplot+ table [y=M, x=x1] from \Data;
\addplot+ table [y=N, x=x1] from \Data;
\addplot+ table [y=P, x=x1] from \Data;
\addplot+ table [y=Q, x=x1] from \Data;
\addplot+ table [y=R, x=x1] from \Data;
\addplot+ table [y=S, x=x1] from \Data;
\addplot+ table [y=T, x=x1] from \Data;
\addplot+ table [y=V, x=x1] from \Data;
\addplot+ table [y=W, x=x1] from \Data;
\addplot+ table [y=Y, x=x1] from \Data;

\end{groupplot}
\end{tikzpicture}

%-----------

VG