yo sepa, no se puede arbitrariamente lugar una mesa en la trama matplotlib
utilizando sólo nativos matplotlib
características. Lo que puede hacer es aprovechar la posibilidad de latex
text rendering. Sin embargo, para hacer esto, debe tener el entorno de trabajo latex
en su sistema. Si usted tiene uno, usted debe ser capaz de producir gráficos como a continuación:
import pylab as plt
import matplotlib as mpl
mpl.rc('text', usetex=True)
plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
#plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[11,12,13,21,22,23,31,32,33]
table = r'''\begin{tabular}{ c | c | c | c } & col1 & col2 & col3 \\\hline row1 & 11 & 12 & 13 \\\hline row2 & 21 & 22 & 23 \\\hline row3 & 31 & 32 & 33 \end{tabular}'''
plt.text(9,3.4,table,size=12)
plt.plot(y)
plt.show()
El resultado es:
favor, tenga en cuenta que se trata ejemplo quick'n'dirty; deberías poder colocar la mesa correctamente jugando con coordenadas de texto. Véase también la docs si necesita cambiar las fuentes etc.
ACTUALIZACIÓN: más en pyplot.table
De acuerdo con la documentation, plt.table
añade una tabla a los ejes actuales. De las fuentes es obvio, que la ubicación de la tabla en el gráfico se determina en relación con los ejes. La coordenada Y
se puede controlar con las palabras clave top
(gráfico superior), upper
(en la mitad superior), center
(en el centro), lower
(en la mitad inferior) y bottom
(gráfico inferior). La coordenada X
se controla con las palabras clave left
y right
. Cualquier combinación de los dos trabajos, p. cualquiera de top left
, center right
y bottom
está bien para usar.
lo que el gráfico más cercano a lo que desea se podría hacer con:
import matplotlib.pylab as plt
plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
#plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[[11,12,13],[21,22,23],[31,32,33]]
# the rectangle is where I want to place the table
the_table = plt.table(cellText=table_vals,
colWidths = [0.1]*3,
rowLabels=row_labels,
colLabels=col_labels,
loc='center right')
plt.text(12,3.4,'Table Title',size=8)
plt.plot(y)
plt.show()
Y esto le da
Espero que esto ayude!
¿Ha intentado mirar más de [este] (http://matplotlib.sourceforge.net/mpl_examples/pylab_examples/table_demo.py) ejemplo? O incluso podría hacer algo [similar] (http://matplotlib.sourceforge.net/examples/pylab_examples/annotation_demo3.html), pero en lugar de las anotaciones, tienes una tabla. – cosmosis
Sí, vi ese ejemplo. Cuando traté de usar el código, no pude asignar los colores y la ubicación de la fila. Tampoco pude encontrar ningún documento de ayuda sobre la sintaxis o el tipo de la llamada. En cuanto a las anotaciones, creo que hay más control que especifica un segundo eje para trazar la tabla. – user1032355