Tikz: x 軸上に回避を配置しますか?

Tikz: x 軸上に回避を配置しますか?

2x2の因子データについて、Tikzで信頼区間付きの折れ線グラフを作成したいと思います。2つのグラフの信頼区間が重ならないように、x軸の目盛りには小さなオフセットが必要です(次のように)。位置回避ggplot2 の場合)。

現在の結果は、私が望んでいるものとほぼ同じです。 Tikz の現在の結果

しかし、私のコードは非常に洗練されていません。X 軸の目盛りがデータ ポイント間の中央に配置されるように、目に見えないプロットを挿入しました (以下のコードを参照)。

私の質問は、Tikz で位置回避を実現する、あるいは一般にそのような折れ線グラフを作成するためのよりエレガントな方法があるかどうかです。

\documentclass{article}
\usepackage{tikz,pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
grid = major,
ylabel = Response time (ms),
xlabel = Prime valence,
xtick = data,
xmin = 0,
xmax = 1,
xticklabels = {negative,positive},
legend style = {at={(1.2,0.5)},
anchor = center}
]

\addplot[white] plot % invisible plot to center the labels
coordinates {
(0.25,750)
(0.75,750)
};
\addlegendentry{}

\addplot[red,mark=square*] plot[error bars/.cd, y dir=both, y explicit]
coordinates {
(0.22,769) +- (0,15) % manual dodge for each data point
(0.72,764) +- (0,15)
};
\addlegendentry{negative}

\addplot[green,mark=square*] plot[error bars/.cd, y dir=both, y explicit]
coordinates {
(0.28,746) +- (0,15)
(0.78,716) +- (0,15)
};
\addlegendentry{positive}

\end{axis}
\end{tikzpicture}

\end{document}

答え1

改善できる点は 2 つあります。

  1. 非表示のプロットには、 の入力を収集するという 1 つの目的しかありませんxtick=data。 と記述するとxtick={0.25,0.75}、非表示のプロットは不要になります。 事前に位置がわからない、より高度なソリューションにソリューションを埋め込むかどうかはわかりませんが、最小限の場合には、これで問題は明らかに解決されます。

  2. 各座標に手動でオフセットを追加しました。 または、pgfplotsを使用してその作業を行うこともできますx filter。以下の例を参照してください。

これら 2 つの変更を加えた結果は次のとおりです。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
grid = major,
ylabel = Response time (ms),
xlabel = Prime valence,
xtick = {0.25,0.75},
xmin = 0,
xmax = 1,
xticklabels = {negative,positive},
legend style = {at={(1.2,0.5)},
anchor = center}
]

\addplot[red,mark=square*,
    % manual dodge for each data point
    x filter/.code={\pgfmathparse{\pgfmathresult-0.03}}
] plot[error bars/.cd, y dir=both, y explicit]
coordinates {
(0.25,769) +- (0,15) 
(0.75,764) +- (0,15)
};
\addlegendentry{negative}

\addplot[green,mark=square*,
    % manual dodge for each data point
    x filter/.code={\pgfmathparse{\pgfmathresult+0.03}}
] plot[error bars/.cd, y dir=both, y explicit]
coordinates {
(0.25,746) +- (0,15)
(0.75,716) +- (0,15)
};
\addlegendentry{positive}

\end{axis}
\end{tikzpicture}

\end{document}

ここに画像の説明を入力してください

関連情報