又是我 :)
我正在尝试使用 绘制一个图pgfplots
。但是,我需要单个标记看起来与其他标记不同,例如在下面的例子中,我希望来自 1970 年的“a”和来自 1990 年的“b”的标记为 x,其余所有标记为球 (*)。(如果您能告诉我一种通过颜色区分它们的方法,我会同样高兴 - 我希望您明白我的意思。)我如何更改这些单个标记?如果已经有关于此问题的帖子我还没有找到,请告诉我。
我的例子是:
\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}
图片看起来是这样的:
提前致谢! :)
答案1
因为我认为你想结合你的两个特点其他问题我用这个作为开始。
为了实现您想要实现的目标,您可以使用该scatter/classes
功能。关于它的工作原理,请查看代码中的注释。
\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}