Balkendiagramm mit Knoten, der den tatsächlichen Wert und den Prozentsatz darstellt

Balkendiagramm mit Knoten, der den tatsächlichen Wert und den Prozentsatz darstellt

Ich möchte, dass der Knoten jedes Balkens den tatsächlichen Wert und den entsprechenden Prozentsatz darstellt.

Hier ist, was ich habe:

\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}

Das ergibt folgendes: mweErgebnis

So hätte ich beispielsweise gerne neben der Leiste für A folgenden Knoten: 32 (73%).

Ich habe damit herumprobiert, nodes near coords={(\pgfmathprintnumber\pgfplotspointmeta\%)}bin aber nicht dahinter gekommen.

Antwort1

Die Rohdaten werden in rawxusw. gespeichert \tikzstyleund sind veraltet.

\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}

Bildbeschreibung hier eingeben

Antwort2

Hier ist eine Möglichkeit mit reinem TikZ

\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}

Bildbeschreibung hier eingeben

verwandte Informationen