단일 마커의 색상이나 형태를 변경하는 방법

단일 마커의 색상이나 형태를 변경하는 방법

또 나야 :)

를 이용하여 플롯을 만들려고 합니다 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}

위 코드의 결과를 보여주는 이미지

관련 정보