
A figura abaixo é o resultado de uma pesquisa do Google Docs. Estou tentando criar um gráfico de barras semelhante usando LaTeX (no verso), mas até agora não consegui obter os mesmos resultados.
O valor de saída acima é o resultado do que obtive até agora. os problemas que tenho são:
Não consegui descobrir como mostrar as porcentagens ao lado de cada barra e número (apenas os números são mostrados).
"Símbolos não alfanuméricos (sinais de pontuação, #, &, @, etc.)" também tiveram que ser editados porque quando tentei mantê-los, as outras 3 entradas (Números, Letras Maiúsculas, Letras Minúsculas) e suas barras desapareceram.
Estou usando
\documentclass[sigconf, nonacm, 12 pt, a4paper]{acmart}
, então tem colunas duplas. Como posso fazer o gráfico abranger ambas as colunas? Eu entendo que {figure*} deve funcionar, mas ainda assim o gráfico parece um pouco estranho.
Este é o código que usei para criar o 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}
Deixe-me saber se eu perdi alguma coisa.
Responder1
Isso pode ser um pouco complicado, mas parece melhor. Esvazio o rótulo ytick e os adiciono manualmente usando \node
fora do ambiente do eixo. Não fiz isso na acmart
aula, então não testei comportamentos em duas colunas. Espero que funcione bem. Também mudo o local da legenda abaixo da figura. Acho que isso é padrão. Se não for o seu caso, basta movê-lo de volta. Aqui está o 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}
Responder2
Preciso adicionar outra resposta. Esta é uma abordagem muito mais simples. Encurte bastante o código. E não precisa de nenhum \node
comando extra. Também deixo os quadros dos eixos e a cor da barra próximos aos do Google Docs. Aqui está o 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}