2x2 요인 데이터의 경우 Tikz에서 신뢰 구간이 있는 선 그래프를 만들고 싶습니다. x축 눈금은 두 플롯의 신뢰 구간이 서로 겹치지 않도록 작은 오프셋을 가져야 합니다(예:position_dodgeggplot2에서).
내 현재 결과는 내가 원하는 것과 매우 흡사합니다.
그러나 내 코드는 매우 우아하지 않습니다. 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
두 가지 개선이 가능합니다.
보이지 않는 플롯에는 단 하나의 목적, 즉 에 대한 입력을 수집하는 것이 있습니다
xtick=data
. 라고 쓰면xtick={0.25,0.75}
더 이상 보이지 않는 플롯이 필요하지 않습니다. 사전에 위치를 모르는 좀 더 고급 솔루션에 솔루션을 포함시키고 싶은지는 모르겠지만... 최소한의 경우에는 문제가 명확하게 해결됩니다.각 좌표에 수동으로 오프셋을 추가했습니다. 또는 를
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}