Estou criando um gráfico de barras usando o seguinte código:
\documentclass[tikz]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=12pt,
ymin=0,ymax=150,
xtick=data,
enlarge x limits={abs=2cm},
symbolic x coords={blond, brown},
bar width = 20pt,
ylabel= number,
ytick align=outside,
ytick pos=left,
major x tick style = transparent,
legend style={at={(0.04,0.96)},anchor=north west, font=\footnotesize, legend cell align=left,},
]
\addplot[ybar,fill=blue, area legend] coordinates {
(blond,20)
(brown,100)};
\addplot[ybar,fill=purple, area legend] coordinates {
(blond,110)
(brown,105)};
\legend{Boys, Girls}
\end{axis}
\end{tikzpicture}
\end{document}
No entanto, gostaria de adicionar um rótulo abaixo e entre os rótulos do eixo x, conforme mostrado na figura anexa. Como posso criar esta etiqueta?
Responder1
Você só precisa, xlabel
por analogia com ylabel
. Os rótulos no eixo x são apenas rótulos de marca, como aqueles no eixo y. O fato de serem palavras em vez de números não impede que você também rotule o eixo como um todo, assim como você pode rotular o eixo y;). Pelo menos, parece funcionar para mim:
\documentclass[tikz,border=10pt]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=12pt,
ymin=0,ymax=150,
xtick=data,
enlarge x limits={abs=2cm},
symbolic x coords={blond, brown},
bar width = 20pt,
ylabel= number,
xlabel= hair colour,
ytick align=outside,
ytick pos=left,
major x tick style = transparent,
legend style={at={(0.04,0.96)},anchor=north west, font=\footnotesize, legend cell align=left,},
]
\addplot[ybar,fill=blue, area legend] coordinates {
(blond,20)
(brown,100)};
\addplot[ybar,fill=purple, area legend] coordinates {
(blond,110)
(brown,105)};
\legend{Boys, Girls}
\end{axis}
\end{tikzpicture}
\end{document}
Responder2
Uma alternativa é usar xticklabel* coordinate system
para colocar o título da trama. clip=false
é necessário.
\node (title) at (xticklabel* cs: 0.5,25pt) {Hair Color};
Código
\documentclass[tikz]{standalone}
\usepackage[english]{babel}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
ybar=12pt,
ymin=0,ymax=150,
xtick=data,
enlarge x limits={abs=2cm},
symbolic x coords={blond, brown},
bar width = 20pt,
ylabel= number, clip=false,
ytick align=outside,
ytick pos=left,
major x tick style = transparent,
legend style={at={(0.04,0.96)},anchor=north west, font=\footnotesize, legend cell align=left,},
]
\addplot[ybar,fill=blue, area legend] coordinates {
(blond,20)
(brown,100)};
\addplot[ybar,fill=purple, area legend] coordinates {
(blond,110)
(brown,105)};
\legend{Boys, Girls}
\node (title) at (xticklabel* cs: 0.5,25pt) {Hair Color};
\end{axis}
\end{tikzpicture}
\end{document}