我正在尝试制作一个从中间平均的 ybar 轴,但是我找不到改变 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}