在 TikzPicture 中的每個欄位下方放置標籤

在 TikzPicture 中的每個欄位下方放置標籤

我正在嘗試創建一個像這樣的圖表:

通緝

但我只能使用圖例文字讓它看起來像這樣,但我想將文字直接放在長條圖下方(如 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}

在此輸入影像描述

相關內容