настраиваемый маркер (pgfdeclareplotmark) с цветом в качестве аргумента

настраиваемый маркер (pgfdeclareplotmark) с цветом в качестве аргумента

Я пытаюсь настроить форму+цвет маркера для диаграммы рассеяния. Все работает, когда я жестко кодирую цвет (например, красный):

\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}


\newcommand{\myStyle}{%
% define marker shape here
    \tikzset{marker/.style={circle, inner sep=1.5pt, fill=red}}
}

\pgfdeclareplotmark{mymarker}{%
    \node[marker] {};
}

\begin{document}

\begin{tikzpicture}

\myStyle

\begin{axis}[]

\addplot[only marks, mark=mymarker, smooth] coordinates {
    (3, 0.5)
    (4, 0.6)
    (5, 0.4)
};

\end{axis}
\end{tikzpicture}

Однако мне сложно сделать цвет индивидуальным для каждого участка. Я могу определить

\newcommand{\myStyle}[1]{%
% define marker shape here
    \tikzset{marker/.style={circle, inner sep=1.5pt, fill=#1}}
}

но я думаю, что мне нужно указать цвет внутри блока

\pgfdeclareplotmark{mymarker}{%
        \node[marker] {};
    }

для изменения цвета для каждой команды addplot. Однако я не уверен, как передать цвет в качестве аргумента команде \pgfdeclareplotmark.

решение1

Редактировать 1

введите описание изображения здесь

\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}

\pgfplotsset{compat=1.17} % Ensure compatibility with pgfplots

% Declare macro to create customized markers with a specific color
\newcommand{\declareCustomMarker}[2]{%
    \pgfdeclareplotmark{#1}{%
        \node[circle, inner sep=1.5pt, fill=#2] {};
    }
}

\begin{document}

\begin{tikzpicture}

\begin{axis}[]

% Declare markers with different colors
\declareCustomMarker{mymarker-blue}{blue}
\declareCustomMarker{mymarker-green}{green}

% Use the blue marker for this plot
\addplot[only marks, mark=mymarker-blue, smooth] coordinates {
    (3, 0.5)
    (4, 0.6)
    (5, 0.4)
};

% Use the green marker for this plot
\addplot[only marks, mark=mymarker-green, smooth] coordinates {
    (2, 0.7)
    (4, 0.8)
    (6, 0.9)
};

\end{axis}
\end{tikzpicture}

\end{document}

так ?

введите описание изображения здесь

\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}

\pgfkeys{/tikz/.cd,
    marker color/.store in=\markercolor,
    marker color=red % default color
}

\newcommand{\myStyle}[1]{%
    \pgfkeys{/tikz/marker color=#1} % set the marker color
    % define marker shape here
    \tikzset{marker/.style={circle, inner sep=1.5pt, fill=\markercolor}}
}

\pgfdeclareplotmark{mymarker}{%
    \node[marker] {};
}

\begin{document}

\begin{tikzpicture}

\myStyle{red} % <= marker color here

\begin{axis}[]

\addplot[only marks, mark=mymarker, smooth] coordinates {
    (3, 0.5)
    (4, 0.6)
    (5, 0.4)
};

\end{axis}
\end{tikzpicture}

\end{document}

Связанный контент