我想通过向下移动(远离 x 轴)来更改以下条形图中 x 轴标签的位置。不幸的是,我无法这样做,因为我at={(ticklabel cs:<position>)}
也尝试过every axis x label/.style={at={(rel axis cs:0.5,-0.5)}},
。
有什么建议吗?
\documentclass{scrartcl}
\usepackage{caption,subcaption}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.3,
}
%Maintenance Subskala Kreuztabelle
\begin{filecontents*}{data.txt}
Name x niedrige st1 hohe st2
niedrig$\:$Traumabelastung 1 22.2 0 14.8 0
hohe$\:$Traumabelastung 2 23.1 0 18.8 0
\end{filecontents*}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
title=A,
bar width=50pt,
ybar=0pt,
ylabel={\% Abbrecher},
ymin=0,
ymax=40,
enlarge x limits=0.5,
width=11cm,
height=8cm,
xticklabels from table={data.txt}{Name},
xtick=data,
xlabel near ticks,
% extra x ticks={0.82, 1.5}, % I want to label bars with some extra numbers here therefore I need to move down "niedrige/hohe Traumabelastung".
% extra x tick style={yshift=10mm, major tick length=0pt,
% },
% extra x tick labels={
% \textbf{2},
% \textbf{10}
% },
ticklabel style={/pgf/number format/.cd, use comma, 1000 sep = {}},
nodes near coords,
every node near coord/.append style={
yshift=transformdirectiony(\myshift+1.5),
anchor=north,
rotate=0,
font=\scriptsize
},
ymajorgrids=true,
legend pos= north west,% Legende oben links in Abb.
legend cell align=left% Rechtsbündige Ausrichtung der Legende
]
\addplot
[draw = black,
fill = gray!30!white,
error bars/.cd,
y dir=both,
y explicit,
% error mark=triangle*,
error bar style={color=black}]
table[
x=x,
y=niedrige,
y error=st1,
visualization depends on=1.25*\thisrow{st1} \as \myshift,
]
{data.txt};
\addlegendentry{niedrige Maintenance};
\addplot
[draw = black,
fill=white,
error bars/.cd,
y dir=both,
y explicit,
% error mark=triangle*,
error bar style={color=black}]
table[
x=x,
y=hohe,
y error=st2,
visualization depends on=1.25*\thisrow{st2} \as \myshift,
]
{data.txt};
\addlegendentry{hohe Maintenance};
\end{axis}
\end{tikzpicture}
\caption{Abbrecherquoten der verschiedenen Gruppen. Es werden Abbrecherquoten in Prozent und 95\% Konfidenzintervalle f\"ur drei Gruppen f\"ur hohe Traumabelastung und niedrige Traumabelastung unterteilt nach niedrigem und hohem Motivationswert angegeben. Zahlen unterhalb der Balken geben die Anzahl der Patienten in der jeweiligen Gruppe an. \textbf{A}) Maintenance Subskala, \textbf{B}) Contemplation Subskala, \textbf{C}) RTC Wert.}
\end{figure}
\end{document}
感谢您的帮助!
答案1
标签“niedrige/hohe Traumabelastung”是刻度标签,而不是轴标签。要将它们向下移动,您可以使用
xticklabel style={/tikz/yshift=-15pt},% <- added
\documentclass{scrartcl}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.3,% 1.3 is really old
}
%Maintenance Subskala Kreuztabelle
\begin{filecontents*}{data.txt}
Name x niedrige st1 hohe st2
{niedrige Traumabelastung} 1 22.2 0 14.8 0
{hohe Traumabelastung} 2 23.1 0 18.8 0
\end{filecontents*}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{axis}[
title=A,
bar width=50pt,
ybar=0pt,
ylabel={\% Abbrecher},
ymin=0,
ymax=40,
enlarge x limits=0.5,
width=11cm,
height=8cm,
xticklabels from table={data.txt}{Name},
xtick=data,
xlabel near ticks,
extra x ticks={0.82, 1.5}, % I want to label bars with some extra numbers here therefore I need to move down "niedrige/hohe Traumabelastung".
extra x tick style={yshift=15pt,% <- changed to 15pt
major tick length=0pt,
},
extra x tick labels={
\textbf{2},
\textbf{10}
},
ticklabel style={/pgf/number format/.cd, use comma, 1000 sep = {}},
xticklabel style={/tikz/yshift=-15pt},% <- added
nodes near coords,
every node near coord/.append style={
yshift=transformdirectiony(\myshift+1.5),
anchor=north,
rotate=0,
font=\scriptsize
},
ymajorgrids=true,
legend pos= north west,% Legende oben links in Abb.
legend cell align=left% Rechtsbündige Ausrichtung der Legende
]
\addplot
[draw = black,
fill = gray!30!white,
error bars/.cd,
y dir=both,
y explicit,
% error mark=triangle*,
error bar style={color=black}]
table[
x=x,
y=niedrige,
y error=st1,
visualization depends on=1.25*\thisrow{st1} \as \myshift,
]
{data.txt};
\addlegendentry{niedrige Maintenance};
\addplot
[draw = black,
fill=white,
error bars/.cd,
y dir=both,
y explicit,
% error mark=triangle*,
error bar style={color=black}]
table[
x=x,
y=hohe,
y error=st2,
visualization depends on=1.25*\thisrow{st2} \as \myshift,
]
{data.txt};
\addlegendentry{hohe Maintenance};
\end{axis}
\end{tikzpicture}
\caption{Abbrecherquoten der verschiedenen Gruppen. Es werden Abbrecherquoten in Prozent und 95\% Konfidenzintervalle f\"ur drei Gruppen und niedrige Traumabelastung unterteilt nach niedrigem und hohem Motivationswert angegeben. Zahlen unterhalb der Balken geben die Anzahl der Patienten in der jeweiligen Gruppe an. \textbf{A}) Maintenance Subskala, \textbf{B}) Contemplation Subskala, \textbf{C}) RTC Wert.}
\end{figure}
\end{document}