ipydatagrid allows you to easily create custom renderers, here we use a TextRenderer
widget for creating our own custom boolean renderers!
import pandas as pd
import numpy as np
import json
from ipydatagrid import DataGrid, TextRenderer, Expr
n = 50_000
df = pd.DataFrame({
'Value 1': np.random.randn(n),
'Value 2': np.random.randn(n),
'Value 3': np.random.choice([True, False], n),
'Value 4': np.random.choice([True, False], n),
})
# This returns the unicode value for specific font-awesome icons,
# check-out this link for more icons:
# https://fontawesome.com/v4.7.0/cheatsheet/
def bool_render_text1(cell):
if cell.value > 0:
return '\uf00c' # Check
else:
return '\uf00d' # Cross
def bool_render_text2(cell):
if cell.value > 0:
return '\uf111' # Circle
else:
return ' '
def bool_render_text3(cell):
if cell.value:
return '\uf164' # Thumb up
else:
return '\uf165' # Thumb down
def bool_render_text4(cell):
if cell.value:
return '\uf118' # Smile
else:
return '\uf119' # Frown
def bool_render_color(cell):
if cell.value > 0:
return '#2fbd34'
else:
return '#b82538'
common_args = {
'font': 'bold 14px fontawesome',
'text_color': Expr(bool_render_color),
'horizontal_alignment': 'center'
}
renderers = {
'Value 1': TextRenderer(
text_value=Expr(bool_render_text1),
**common_args
),
'Value 2': TextRenderer(
text_value=Expr(bool_render_text2),
**common_args
),
'Value 3': TextRenderer(
text_value=Expr(bool_render_text3),
**common_args
),
'Value 4': TextRenderer(
text_value=Expr(bool_render_text4),
**common_args
)
}
display(df)
DataGrid(df, base_row_size=30, base_column_size=150, renderers=renderers)