
例:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}
% Define TikZ styles for interpolation points and values
\newcommand{\interpolationPointStyle}{%
\tikzset{interpolation point/.style={circle, inner sep=1.5pt, fill=black}}
}
\begin{document}
\begin{tikzpicture}
\interpolationPointStyle
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
ymin=0,
xtick=\empty,
axis background/.style={fill=white},
clip=false,
]
% Define array of tick positions
\def\myxticks{3, 4, 5}
% Loop over tick positions and draw interpolation points
\foreach \tick in \myxticks {
\edef\tmp{\noexpand\node[interpolation point] at (axis cs:\tick,0) {};}
\tmp
}
% Curve 1
\addplot[color=red, mark=none, smooth] coordinates {
(3, 0.5)
(4, 0.6)
(5, 0.4)
};
\addlegendentry{Curve 1}
% Interpolation points
\addlegendimage{interpolation point}
\addlegendentry{Interpolation Points}
\end{axis}
\end{tikzpicture}
\end{document}
出力を生成する
質問:
x軸に描いた補間点のシンボルを凡例に表示したいのですが、凡例画像に配置するとうまくいくと思いましたが、直線が表示されてしまいます。
何を修正する必要がありますか?
答え1
これがあなたのコードに対する私の変更です:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{xcolor}
% Define TikZ styles for interpolation points and values
\newcommand{\interpolationPointStyle}{%
\tikzset{interpolation point/.style={circle, inner sep=1.5pt, fill=black}}
}
\begin{document}
\begin{tikzpicture}
\interpolationPointStyle
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
ymin=0,
xtick=\empty,
axis background/.style={fill=white},
clip=false,
legend style={at={(0.5,-0.2)}, anchor=north, legend columns=-1}
]
% Define array of tick positions
\def\myxticks{3, 4, 5}
% Loop over tick positions and draw interpolation points
\foreach \tick in \myxticks {
\edef\tmp{\noexpand\node[interpolation point] at (axis cs:\tick,0) {};}
\tmp
}
% Curve 1
\addplot[color=red, mark=none, smooth] coordinates {
(3, 0.5)
(4, 0.6)
(5, 0.4)
};
\addlegendentry{Curve 1}
% Manually create legend entry for interpolation points
\addlegendimage{only marks, mark=*, mark options={fill=black, scale=0.8}}
\addlegendentry{Interpolation Points}
\end{axis}
\end{tikzpicture}
\end{document}
次のような出力が生成されます。
凡例を下部に配置してしまいました。申し訳ありません。個人的には、\addlegendimage
TikZ 描画コマンドを直接使用していないため、補間ポイントの TikZ スタイルが認識されないために問題が発生していると思います。
ただし、これはあくまで私の理論であり、100%確信があるわけではありません。
答え2
私は自分の問題の解決策を見つけました:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xcolor}
% Define TikZ styles for interpolation points
\newcommand{\interpolationPointStyle}{%
\tikzset{interpolation point/.style={circle, inner sep=1.5pt, fill=black}}
}
% Define custom legend styles for interpolation points
\pgfplotsset{
interpolation point legend/.style={
legend image code/.code={
\node[interpolation point] at (0.3cm,0cm) {};
}
},
}
\begin{document}
\begin{tikzpicture}
\interpolationPointStyle
\begin{axis}[
xlabel={$x$},
ylabel={$y$},
ymin=0,
xtick=\empty,
axis background/.style={fill=white},
clip=false,
]
% Define array of tick positions
\def\myxticks{3, 4, 5}
% Loop over tick positions and draw interpolation points
\foreach \tick in \myxticks {
\edef\tmp{\noexpand\node[interpolation point] at (axis cs:\tick,0) {};}
\tmp
}
% Curve 1
\addplot[color=red, mark=none, smooth] coordinates {
(3, 0.5)
(4, 0.6)
(5, 0.4)
};
\addlegendentry{Curve 1}
\addlegendimage{interpolation point legend}
\addlegendentry{Interpolation Points}
\end{axis}
\end{tikzpicture}
\end{document}
出力: