Gráfico/carácter de barras con el nodo como valor real y porcentaje

Gráfico/carácter de barras con el nodo como valor real y porcentaje

Me gustaría que el nodo de cada barra fuera el valor real y su porcentaje correspondiente.

Esto es lo que tengo:

\begin{figure}[h]
    \centering
\begin{tikzpicture}
                \tikzstyle{every node}=[font=\scriptsize]
                \begin{axis}[
                axis lines*=left,
                title=myTitle,
                xbar, 
                xmin=0,
                xmax=50,
                width=9cm,
                height=5cm,
                enlarge y limits=0.3,
                xlabel={Number of Stuff},
                symbolic y coords={A, B, C},
                ytick=data,
                nodes near coords,
                point meta={x*100/44},
                nodes near coords={(\pgfmathprintnumber\pgfplotspointmeta\%)},
                nodes near coords align={horizontal},
                y tick label style={font=\scriptsize,text width=1.2cm,align=center}
                ]
                \addplot coordinates{(42,C) (40,B) (32,A)};
                \end{axis}
\end{tikzpicture}
    \caption{A test}
    \label{hist:auth}
\end{figure}

Lo que da lo siguiente: mweResultado

Entonces me gustaría tener, por ejemplo, al lado de la barra de A el siguiente nodo: 32 (73%).

He estado jugando nodes near coords={(\pgfmathprintnumber\pgfplotspointmeta\%)}pero no pude entenderlo.

Respuesta1

Los datos sin procesar que se almacenan en rawxetc. \tikzstyleestán en desuso.

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[every node/.append style={font=\scriptsize}]
  \begin{axis}[visualization depends on=rawx \as \myx,
     axis lines*=left,
     title=myTitle,
     xbar, 
     xmin=0,
     xmax=50,
     width=9cm,
     height=5cm,
     enlarge y limits=0.3,
     xlabel={Number of Stuff},
     symbolic y coords={A, B, C},
     ytick=data,
     nodes near coords,
     point meta={x*100/44},
     nodes near coords={\pgfmathprintnumber\myx~(\pgfmathprintnumber\pgfplotspointmeta\%)},
     nodes near coords align={horizontal},
     y tick label style={font=\scriptsize,text width=1.2cm,align=center}
     ]
     \addplot coordinates{(42,C) (40,B) (32,A)};
  \end{axis}
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Aquí hay una forma de usar TikZ puro.

\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}[x=1.5cm]
\pgfkeys{/pgf/number format/.cd,fixed,precision=2}

\foreach \i in {0,1,...,5}{
\pgfmathsetmacro{\num}{int(10*\i)}  
\draw (\i,0) node[below=1mm]{$\num$}--+(90:2mm);
}
% Total 44 participants
\foreach \j/\jtext/\jnum in {1/A/32,2/B/40,3/C/42}{
\draw (0,\j) node[left=5mm]{\jtext}--+(180:2mm);
\pgfmathsetmacro{\jpercent}{\jnum/44*100};       
\draw[blue!50,line width=3mm] (0,\j)--+(0:\jnum/10) 
node[right,blue]{$\jnum \;(\pgfmathprintnumber{\jpercent} \%)$};
}

\draw (0,3.5)--(0,0)--(5,0);
\path
(current bounding box.north) node[above]{My title}
(current bounding box.south) node[below=2mm]{Number of Participants};
\end{tikzpicture}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada