2
respostas

Gerando gráfico a partir de um código latex com Python

Segue o código latex de parte de uma tabela:

\begin{table}[ht]
    \centering
    \caption{Tempo transcorrido}
    \label{tab:kmeaans_vec_np_knl}
    \smallskip
    \begin{tabular}{|l|c|c|c|c|c|c|c|c|c|c|}
        \hline    Clusters    &    02   &    04 &  08   & 16    &  32   &  64  & 128  & 256  &512   &1024    \\[0.5ex]
        \hline  02 processors & 00:00 & 00:00 & 00:01 & 00:03 & 00:08 &01:01 &00:39 &03:12 &06:06 &12:07   \\[0.5ex]
        \hline  04 processors & 00:00 & 00:00 & 00:01 & 00:03 & 00:07 &00:47 &00:32 &01:26 &03:42 &07:00   \\[0.5ex]
                \hline  46 processors & 00:00 & 00:00 & 00:01 & 00:02 & 00:05 &00:33 &00:15 &00:45 &01:05 &01:30   \\[0.5ex]
        \hline  48 processors & 00:00 & 00:00 & 00:01 & 00:02 & 00:05 &00:32 &00:15 &00:46 &00:46 &01:32   \\[0.5ex]
        \hline  50 processors & 00:00 & 00:00 & 00:01 & 00:02 & 00:05 &00:32 &00:14 &00:46 &00:45 &01:33   \\[0.5ex]
        \hline
    \end{tabular}
\end{table}

A imagem da tabela completa: https://imgur.com/a/a9xbIZp

Os valores 00:00, por exemplo, são minutos:segundos.

A ideia é usar a tabela acima para construir um gráfico que mostrasse para cada par (numero de processadores, numero de clusters) o tempo "gasto" na execucao da tarefa. Por exemplo:

02 processadores com 16 clusters o tempo foi de 00:03.

ideia para o aspecto do grafico:

https://imgur.com/a/AMMIUFT

Existe alguma maneira de ler o código latex acima e gerar o gráfico em Python (por exemplo com matplotlib)?

Eu tentei o código abaixo:

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt


fig = plt.figure()
ax = fig.gca(projection='3d')


xs = range(2,52,2) #processors
plt.xticks(xs)
ys = range(0, 251) #time
#plt.yticks(ys)
zs = [2<<exponent for exponent in range(10)]#clusters
ax.set_zticks(zs)


# Tweaking display region and labels
ax.set_xlim(2, 52)
ax.set_ylim(0, 251)
ax.set_zlim(0, 1025)
ax.set_xlabel('Number of processors')
ax.set_ylabel('Time')
ax.set_zlabel('Number of clusters')

plt.show()

O gráfico ficou com valores sobrepostos no eixo z (numero de clusters) e eu não soube como plotar os tempos no eixo y (coloquei os valores range(0, 251) apenas para gerar algo)

Alguma sugestão de como abordar o problema?

2 respostas

LaTex? Nunca ouvi falar. É usada por que nicho de programadores?

Mas dei uma fuçada no google pra vc.

Dá uma olhada aqui https://matplotlib.org/users/usetex.html ou https://plot.ly/python/LaTeX/ e veja se atende.

@André Victor Ruiz Pedroso:

Latex é para diagramação de textos científicos: https://pt.wikipedia.org/wiki/LaTeX

Editei a pergunta agora! Veja se ficou mais claro. Obrigado!