Tikz:在x軸上定位閃避?

Tikz:在x軸上定位閃避?

對於我的 2x2 階乘數據,我想在 Tikz 中建立帶有置信區間的線圖。 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

我有兩個可能的改進:

  1. 你的隱形情節只有一個目的,就是收集 的輸入xtick=data。如果你寫了xtick={0.25,0.75},你就不再需要看不見的情節了。我不知道你是否想將解決方案嵌入到一些更高級的解決方案中,在這些解決方案中你事先不知道位置......但至少,這顯然解決了問題。

  2. 您已手動將偏移量新增至每個座標。或者,您可以pgfplots透過 來完成這項工作x filter,請參閱下面的範例。

這是這兩個修改的結果:

\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}

在此輸入影像描述

相關內容