2012-05-25 32 views
8

Estoy desarrollando algunos flujos de trabajo interactivos en IPython usando el fantástico Cuaderno para análisis interactivo y pandas."Tablas cebra" en IPython Notebook?

Algunas de las tablas que estoy mostrando serían mucho más fáciles de leer con un poco de formateo. Realmente me gustaría algo así como "tablas de cebra", donde las demás filas están sombreadas. I read here acerca de cómo este formato se puede implementar a través de css. ¿Existe alguna manera directa de aplicar un CSS a un IPython Notebook y luego tener tablas representadas usando la hoja de estilos?

Respuesta

13

Puede ejecutar javascript arbitrario (con jQuery) en las celdas de marcado dentro de las etiquetas <script>, o por medio de la clase IPython.core.display.Javascript de IPython. Con estos, puede manipular (o arruinar) el documento al contenido de su corazón, incluida la adición de hojas de estilo.

tablas Por ejemplo, lo siguiente: RAYA debidamente clasificadas

<script type="text/javascript"> 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
</script> 

Si sólo se adhieren que en una de sus células de rebajas, a continuación, se aplicará a toda la página.

O bien, puede ejecutar el mismo código (menos <script> etiquetas) de Python en una celda de código:

from IPython.core.display import Javascript, display 
display(Javascript(""" 
    $('head').append(
     "<style type='text/css'>tr.odd{background-color: #def}</style>" 
    ); 
""")) 

Pero haciendo esto sólo afectará a las tablas que se clasifican adecuadamente, lo cual es hasta el código eso es escribir el HTML (por ejemplo, en Pandas).

+2

Sería bueno comenzar a hacer algo de este tipo de cosas en pandas (suponiendo que la API se haya estabilizado) –

+0

fyi: [esta pregunta] (http://stackoverflow.com/questions/4977008/how-to- use-table-trodd-td-in-html) tiene algunos ingeniosos css3 para 'tablas cebra'. – drevicko

2

si está interesado en construir grids/tables usando slickgrid, pero en python, entonces quizás esté interesado en qgrid. Esto funciona desde notebooks ipython que usan pandas.

https://github.com/quantopian/qgrid

Otra opción es el uso de handsontable así:

http://nbviewer.ipython.org/gist/bollwyvl/6ad208084744c60dda65

Sin embargo, otra, tercera opción utilizando únicamente pandas está aquí:

Pandas Dataframes to_html: Highlighting table rows

cuarta opción es utilice un motor de plantillas como jinja2 de la siguiente manera:

Pandas Dataframe display on a webpage

http://nbviewer.ipython.org/github/pydata/pandas/blob/8c4f9571c08d5122f1d9e40c43dadab8b6f10bf5/pandas_HTML_styling.ipynb

Por último, existe una cuestión abierta en pandas para prestar basado en plantillas:

https://github.com/pydata/pandas/issues/3190

P. S.guru de Python desde Google sugiere esta solución mínima (evitar cualquier dependencia de terceros):

https://stackoverflow.com/a/1475453/2230844

o leer su libro:

Python en una cáscara de nuez, 2ª edición, Capítulo 23 Texto estructurado: HTML

+0

Gracias por la sugerencia sobre el paquete qgrid. – rbrito

+0

qgrid tiene un problema abierto con las celdas de colorear – denfromufa

+1

https://github.com/quantopian/qgrid/issues/28 – denfromufa