Skip to main content
v2.2

Data Grid

Data GridData Grid
import lightningchart as lc

lc.set_license('my-license-key')

grid = lc.DataGrid(title='Tech Companies Performance', theme=lc.Themes.Light)

# Sample data
companies = [
{
'name': 'TechCorp', 'icon': 'Path to techcorp.png',
'stock': 342.50, 'market_cap': 2.8, 'revenue': 125.4,
'stock_trend': [330, 335, 340, 338, 342],
'revenue_trend': [110, 115, 118, 122, 125],
'quarterly': [28, 31, 33, 34],
'product_launches': [1, 1, -1, 1, 1, 1, -1, 1],
'revenue_segments': [45, 30, 15, 10]
},
{
'name': 'CloudSystems', 'icon': 'Path to cloud.png',
'stock': 156.80, 'market_cap': 1.2, 'revenue': 78.9,
'stock_trend': [165, 160, 158, 155, 157],
'revenue_trend': [70, 72, 75, 77, 79],
'quarterly': [18, 19, 20, 22],
'product_launches': [1, -1, 1, 1, -1, 1, 1, 1],
'revenue_segments': [50, 25, 15, 10]
},
{
'name': 'AI Dynamics', 'icon': 'Path to ai.png',
'stock': 89.25, 'market_cap': 0.5, 'revenue': 34.2,
'stock_trend': [75, 78, 82, 86, 89],
'revenue_trend': [25, 28, 30, 32, 34],
'quarterly': [7, 8, 9, 10],
'product_launches': [1, 1, 1, -1, 1, 1, 1, 1],
'revenue_segments': [40, 35, 15, 10]
},
{
'name': 'DataFlow Inc', 'icon': 'Path to data.png',
'stock': 234.10, 'market_cap': 1.9, 'revenue': 92.7,
'stock_trend': [240, 238, 235, 236, 234],
'revenue_trend': [88, 89, 90, 91, 93],
'quarterly': [22, 23, 23, 25],
'product_launches': [-1, 1, 1, -1, 1, 1, -1, 1],
'revenue_segments': [55, 20, 15, 10]
}
]

# Header row
header = ['', 'Company', 'Stock Price', 'Market Cap', 'Revenue',
'Price Trend', 'Revenue Growth', 'Quarterly', 'Launches', 'Segments']

grid.set_row_content(0, header)

# Style header
grid.set_row_text_font(0, size=14, weight='bold')\
.set_row_background_fill_style(0, "#3b99cb")\
.set_row_borders(0, {'bottom': True})

# Add company data
for i, company in enumerate(companies):
row = i + 1

grid.set_cell_image_content(0, row, company['icon'], height=32)
grid.set_cell_content(1, row, f"{company['name']}")
grid.set_cell_text_font(1, row, size=13, weight='bold')
grid.set_cell_content(2, row, f"${company['stock']:.2f}")
grid.set_cell_content(3, row, f"${company['market_cap']:.1f}B")
grid.set_cell_content(4, row, f"${company['revenue']:.1f}B")

# Spark-line: Stock price trend
stock_change = company['stock_trend'][-1] - company['stock_trend'][0]
grid.set_cell_content(5, row, {
'type': 'spark-line',
'data': [{'x': j, 'y': v} for j, v in enumerate(company['stock_trend'])],
'strokeStyle': {'thickness': 2, 'color': '#00ff88' if stock_change > 0 else '#ff4444'},
'markers': [
{'type': 'point', 'value': 'max', 'fillStyle': '#00ff88', 'size': 6},
{'type': 'point', 'value': 'min', 'fillStyle': '#ff4444', 'size': 6}
]
})
# Spark-area: Revenue growth
grid.set_cell_content(6, row, {
'type': 'spark-area',
'data': [{'x': j, 'y': v} for j, v in enumerate(company['revenue_trend'])],
'fillStyle': '#4488ff',
'strokeStyle': {'thickness': 2, 'color': '#66aaff'}
})
# Spark-bar: Quarterly revenue
grid.set_cell_content(7, row, {
'type': 'spark-bar',
'data': company['quarterly'],
'fillStyle': '#ffaa00',
'gap': 2,
'barSize': 0.8
})
# Spark-win-loss: Product launches
grid.set_cell_content(8, row, {
'type': 'spark-win-loss',
'data': company['product_launches'],
'winFillStyle': '#00ff88',
'lossFillStyle': '#ff4444',
'gap': 1
})
# Spark-pie: Revenue segments
grid.set_cell_content(9, row, {
'type': 'spark-pie',
'data': company['revenue_segments'],
'strokeStyle': {'thickness': 1, 'color': '#ffffff'}
})
grid.set_row_borders(row, {'bottom': True})

grid.open()