如何變更單一標記的顏色或形式

如何變更單一標記的顏色或形式

又是我 :)

我正在嘗試使用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}

顯示上述程式碼結果的圖像

相關內容