
ich bin es wieder :)
Ich versuche, ein Diagramm mit zu erstellen pgfplots
. Allerdings müssen einzelne Markierungen anders aussehen als der Rest. Im folgenden Beispiel soll beispielsweise die Markierung von „a“ für 1970 und die von „b“ für 1990 ein x sein und alle anderen sollen Bälle (*) sein. (Ich wäre ebenso froh, wenn Sie mir sagen könnten, wie ich sie farblich unterscheiden kann – ich hoffe, Sie verstehen, was ich meine.) Wie ändere ich diese einzelnen Markierungen? Wenn es bereits einen Thread dazu gibt, den ich nicht gefunden habe, lassen Sie es mich bitte wissen.
Mein Beispiel ist:
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[width=\textwidth, xlabel = year,%\,/\,Tsd. Tonnen,
xmin = 1965, xmax = 2015,
xtick={1960, 1970, 1980, 1990, 2000, 2010},
x tick label style={/pgf/number format/1000 sep=},
ylabel = example,
ymin = 1000, ymax = 5000,
y tick label style={/pgf/number format/1000 sep=},]
\addplot
coordinates {
(1960, 1650)
(1970, 2550)
(1980, 4050)
(1990, 4550)
(2000, 3550)
(2010, 3750)
};
\addplot
coordinates {
(1960, 1600)
(1970, 2500)
(1980, 4000)
(1990, 4500)
(2000, 3500)
(2010, 3700)
};
\legend{a, b}
\end{axis}
\end{tikzpicture}
\vspace*{0.4cm}
\caption[Example.]{Example.}
\end{figure}
Und das Bild sieht so aus:
Dank im Voraus! :)
Antwort1
Weil ich dachte, Sie möchten die beiden Funktionen aus Ihremandere Frageund dieses hier habe ich als Ausgangspunkt verwendet.
Um Ihr Ziel zu erreichen, können Sie diese scatter/classes
Funktion nutzen. Wie sie funktioniert, erfahren Sie in den Kommentaren im Code.
\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
% I assume you *never* want to use the `1000 sep',
% so remove it *everywhere* with this one call
/pgf/number format/1000 sep=,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=1965,
xmax=2015,
xlabel=year,
xtick={1960,1970,...,2010},
ymin=1000,
ymax=5000,
ylabel=example,
% -----------------------------------------------------------------
% make use of the "scatter" feature and say that the "classes" are
% given explicitly in symbolic notation
scatter,
point meta=explicit symbolic,
% define as many classes as you need and provide the style to each class
% (so the "non-default" classes can be either noticed, I changed
% also changed the marker size)
scatter/classes={
a={}, % empty argument means: use the default style
b={mark=triangle*,orange,mark size=5pt},
c={mark=x,green,mark size=5pt}
},
]
% I changed your coordinates to a table, because than the scatter
% classes are to add much easier
%
% Also I just used an empty line to "break" the connecting line
% (instead of adding a dummy coordinate with a `NaN' value)
\addplot table [x=year,y=value,meta=label] {
year value label
1960 1650 a
1970 2550 b
1980 4050 a
1990 4550 a
2000 3550 a
2010 3750 a
};
\addplot table [x=year,y=value,meta=label] {
year value label
1960 1600 a
1970 2500 a
1980 4000 a
1990 4500 c
2000 3500 a
2010 3700 a
};
% we have to adjust the legend, because in `scatter/classes' this
% works a bit different
\legend{
A, % class "a" of first `\addplot'
, % class "b" of first `\addplot' <-- you don't want to show
, % class "c" of first `\addplot' <-- you don't want to show
B, % class "a" of second `\addplot'
% , % ...
% , % ...
}
\end{axis}
\end{tikzpicture}
\end{document}