Tikz: x축에 회피 위치를 지정하시겠습니까?

Tikz: x축에 회피 위치를 지정하시겠습니까?

2x2 요인 데이터의 경우 Tikz에서 신뢰 구간이 있는 선 그래프를 만들고 싶습니다. x축 눈금은 두 플롯의 신뢰 구간이 서로 겹치지 않도록 작은 오프셋을 가져야 합니다(예:position_dodgeggplot2에서).

내 현재 결과는 내가 원하는 것과 매우 흡사합니다. 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}

여기에 이미지 설명을 입력하세요

관련 정보