
La siguiente figura es el resultado de una encuesta de Google Docs. Estoy intentando crear un gráfico de barras similar usando LaTeX (al dorso) pero hasta ahora no he podido obtener los mismos resultados.
La cifra de producción anterior es el resultado de lo que he obtenido hasta ahora. los problemas que tengo son:
No pude entender cómo mostrar los porcentajes al lado de cada barra y número (solo se muestran los números).
Los "símbolos no alfanuméricos (signos de puntuación, #, &, @, etc.)" también tuvieron que editarse porque cuando intenté conservarlos, las otras 3 entradas (números, letras mayúsculas, letras minúsculas) y sus barras desaparecieron.
Lo estoy usando
\documentclass[sigconf, nonacm, 12 pt, a4paper]{acmart}
para que tenga dos columnas. ¿Cómo puedo hacer que el gráfico abarque ambas columnas? Entiendo que se supone que {figure*} funciona, pero aun así el gráfico parece un poco extraño.
Este es el código que utilicé para crear el gráfico:
\documentclass[sigconf, nonacm, 12 pt, a4paper]{acmart}
\usepackage{amsmath}
\usepackage{pgf-pie}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
Text...
\begin{figure*}
\centering
\caption{Characters Included in a Password}
\label{fig:Chara}
\begin{tikzpicture}
\begin{axis}[
xbar, xmin=0,
symbolic y coords={Nonalphanumeric symbols "punctuation marks etc.",Numbers, Uppercase Letters, Lowercase Letters},
ytick=data,
nodes near coords, nodes near coords align={horizontal},
]
\addplot coordinates {(64,Nonalphanumeric symbols "punctuation marks etc.") (85,Numbers) (62,Uppercase Letters) (83,Lowercase Letters)};
\end{axis}
\end{tikzpicture}
\end{figure*}
\bibliographystyle{ACM-Reference-Format}
\bibliography{sample}
\end{document}
Déjame saber si me he perdido algo.
Respuesta1
Esto puede ser un poco complicado, pero luce mejor. Vacío la etiqueta ytick y las agrego manualmente \node
fuera del entorno del eje. No hice esto en acmart
clase, así que no probé comportamientos en dos columnas. Espero que funcione bien. También cambio la ubicación del título debajo de la figura. Creo que esto es estándar. Si no es tu caso, simplemente muévelo hacia atrás. Aquí está el código:
\documentclass[sigconf,nonacm,12pt,a4paper]{acmart}
\usepackage{amsmath}
\usepackage{pgf-pie}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
Text...
\begin{figure*}[ht]
\centering
\begin{tikzpicture}
\begin{axis}[%
width=0.81\textwidth, height=3.5in,
xbar, bar width=20pt,
xmin=0, xmax=100,
symbolic y coords={Nonalphanumeric, Numbers, Uppercase Letters, Lowercase Letters},
ytick=\empty,
xmajorgrids
]
\addplot [fill=blue!30,draw=blue] coordinates {(64,Nonalphanumeric) (85,Numbers) (62,Uppercase Letters) (83,Lowercase Letters)}
node [minimum size=0pt,inner sep=0pt,right,pin={[font=\footnotesize,pin distance=0.3cm]0:64 (52.5\%)}] at (axis cs:64,Nonalphanumeric) {}
node [minimum size=0pt,inner sep=0pt,right,pin={[font=\footnotesize,pin distance=0.3cm]0:85 (69.7\%)}] at (axis cs:85,Numbers) {}
node [minimum size=0pt,inner sep=0pt,right,pin={[font=\footnotesize,pin distance=0.3cm]0:62 (50.8\%)}] at (axis cs:62,Uppercase Letters) {}
node [minimum size=0pt,inner sep=0pt,right,pin={[font=\footnotesize,pin distance=0.3cm]0:83 (68\%)}] at (axis cs:83,Lowercase Letters) {}
coordinate (symb) at (axis cs:0,Nonalphanumeric)
coordinate (num) at (axis cs:0,Numbers)
coordinate (uprcase) at (axis cs:0,Uppercase Letters)
coordinate (lwrcase) at (axis cs:0,Lowercase Letters);
\end{axis}
\node [font=\small,above left] at (symb) {Nonalphanumeric symbols};
\node [font=\small,left] at (symb) {(punctuation marks,};
\node [font=\small,below left] at (symb) {\#, \&, @, etc.)};
\node [font=\small,left] at (num) {Numbers};
\node [font=\small,left] at (uprcase) {Uppercase Letters};
\node [font=\small,left] at (lwrcase) {Lowercase Letters};
\end{tikzpicture}
\caption{Characters Included in a Password}
\label{fig:Chara}
\end{figure*}
\bibliographystyle{ACM-Reference-Format}
\bibliography{sample}
\end{document}
Respuesta2
Necesito agregar otra respuesta. Este es un enfoque mucho más simple. Acorta mucho el código. Y no necesita ningún \node
comando adicional. También hago que los marcos de los ejes y el color de la barra se acerquen a los documentos de Google. Aquí está el código:
\documentclass[sigconf,nonacm,12pt,a4paper]{acmart}
\usepackage{amsmath}
\usepackage{pgf-pie}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
Text...
\begin{figure*}[ht]
\centering
\begin{tikzpicture}
\begin{axis}[%
width=0.85\textwidth, height=3.5in,
xbar, bar width=20pt,
xmin=0, xmax=100,
symbolic y coords={symb, num, uprcase, lwrcase},
ytick=data,
yticklabels={{Nonalphanumeric symbols (punctuation marks, \#, \&, @, etc.)},Numbers,Uppercase Letters,Lowercase Letters},
y tick label style={align=right,text width=3.2cm},
xtick={0,20,40,60,80,100},
xmajorgrids,
axis line style={lightgray},
major tick style={draw=none},
nodes near coords,
point meta=explicit symbolic,
node near coords style={font=\footnotesize,right=1em,pin={[pin distance=1em]180:}}
]
\addplot [fill={rgb:red,23;green,105;blue,170},draw=none] coordinates {(64,symb) [64 (52.5\%)] (85,num) [85 (69.7\%)] (62,uprcase) [62 (50.8\%)] (83,lwrcase) [83 (68\%)]};
\draw [line width=1.5pt] (current axis.south west) -- (current axis.north west);
\end{axis}
\end{tikzpicture}
\caption{Characters Included in a Password}
\label{fig:Chara}
\end{figure*}
\bibliographystyle{ACM-Reference-Format}
\bibliography{sample}
\end{document}