다음과 같은 그래프를 만들려고 합니다.
하지만 범례 텍스트를 사용해야만 이렇게 보이도록 할 수 있지만 텍스트를 막대 그래프 바로 아래에 배치하고 싶습니다(예: 0ms, 50ms, 150ms).
내 코드:
\begin{figure}[ht]
\centering
\begin{tikzpicture}
\begin{axis}[
ybar,
bar width=20pt,
width=0.5\textwidth,
height=0.5\textwidth,
enlarge x limits=0.5, % dist between x bars
legend style={at={(0.5,-0.20)},anchor=north,legend columns=-1},
ylabel={Impact of latency on gameplay, 1-5},
symbolic x coords={Chess, Pong},
xtick=data,
ymin=1,ymax=5,
nodes near coords,
nodes near coords align={vertical},
]
\addplot coordinates {(Chess,1.1) (Pong,1.5)}; % 0ms results
\addplot coordinates {(Chess,1.6) (Pong,4.6)}; % 1000ms results
\legend{100ms delay,1000ms delay}
\end{axis}
\end{tikzpicture}
\end{figure}
답변1
조금 복잡하지만 작동합니다. 개별 막대의 정규화된 기호 x 좌표에 추가 눈금을 수동으로 추가합니다. Chess
[정규화된]0 좌표가 됩니다. Pong
[정규화된]1 좌표가 됩니다. xmin
[정규화]-0.5 및 xmax
[정규화]1.5 로 설정합니다 . 그런 다음 개별 막대 좌표를 수동으로 찾아 추가 눈금을 추가할 수 있습니다. 더 나은 해결책이 있을 수 있습니다.
\documentclass{report}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=5pt,
bar width=20pt,
width=0.5\textwidth,
height=0.5\textwidth,
ylabel={Impact of latency on gameplay, 1-5},
symbolic x coords={Chess, Pong},
xtick=data,
tick style={draw=none},
xticklabel style={yshift=-0.5cm},
extra x ticks={
[normalized]-0.2,
[normalized]0.2,
[normalized]0.8,
[normalized]1.2
},
extra x tick style={
tick style={draw=none},
tick label style={
yshift=0.5cm,
font=\tiny,
}
},
extra x tick labels={100ms,1000ms,100ms,1000ms},
xmin={[normalized]-0.5},xmax={[normalized]1.5},
ymin=1,ymax=5,
nodes near coords
]
\addplot coordinates {(Chess,1.1) (Pong,1.5)}; % 0ms results
\addplot coordinates {(Chess,1.6) (Pong,4.6)}; % 1000ms results
\end{axis}
\end{tikzpicture}
\end{document}