%20%D1%81%20%D1%86%D0%B2%D0%B5%D1%82%D0%BE%D0%BC%20%D0%B2%20%D0%BA%D0%B0%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%B5%20%D0%B0%D1%80%D0%B3%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0.png)
Я пытаюсь настроить форму+цвет маркера для диаграммы рассеяния. Все работает, когда я жестко кодирую цвет (например, красный):
\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}