将轴 x 线设置为除 0 之外的其他原点

将轴 x 线设置为除 0 之外的其他原点

我正在尝试制作一个从中间平均的 ybar 轴,但是我找不到改变 x 轴原点的方法。

这就是我要的:

x 线应从 3 开始

这就是我所拥有的:

x 线从底部开始

如您所见,我正在尝试求平均值。我可以这样做吗?还是必须转换数据?

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \pgfplotstableread{data/singlecontrol.dat}\datatable

    \begin{axis}[ybar,
    xticklabels from table={\datatable}{variable},
    xtick=data,
    axis x line=middle,
    ymin=1,
    ymax=5
    ]

    \addplot table[x=X,y=averagejs] {\datatable};
    \addlegendentry{Joystick}
    \addplot table[x=X,y=averagem] {\datatable};
    \addlegendentry{Mouse}
    \end{axis}
\end{tikzpicture}
\end{document}

答案1

ybar绘图总是从 y=0 开始。因此,您需要做的是更改 y 轴上的刻度标签,使 0“看起来像”3,然后从数据值中减去 3,您可以使用 来完成此操作y filter/.code

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
    \pgfplotstableread{
    X averagejs averagem variable
    1 3.5 3.7 A
    2 4 4.4 B
    3 3.6 3.9 C   
    }\datatable

    \begin{axis}[ybar,
    xticklabels from table={\datatable}{variable},
    xtick=data,
    axis x line*=middle,
    enlarge x limits,
    y filter/.code={\pgfmathparse{#1-3}},
    ymin=-2, ymax=2,
    yticklabel={\pgfmathparse{\tick+3}\pgfmathprintnumber{\pgfmathresult}}
    ]

    \addplot table[x=X,y=averagejs] {\datatable};
    \addlegendentry{Joystick}
    \addplot table[x=X,y=averagem] {\datatable};
    \addlegendentry{Mouse}
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容