> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openlit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Bar Chart Widget

> Learn how to use the Bar Chart Widget in OpenLIT to compare grouped data using ClickHouse queries and dynamic filters.

The **Bar Chart Widget** in OpenLIT is great for comparing categorical or grouped data—like errors by type, usage by region, or revenue by plan. You can customize the chart direction, stack behavior, and bind dynamic filters directly into your ClickHouse queries.

## When to use

* Comparing usage across different platforms or regions
* Visualizing grouped data like plan types, error categories, or product segments
* Monitoring metrics over categories with filter support

## How to add a bar chart

<iframe className="w-full aspect-video" src="https://www.youtube.com/embed/7Y94KEZI2hM?list=PLgErWFh-dyiGp9yUDnnx67wHEeNqzzMXZ" title="How to Use the Bar Chart Widget in OpenLIT – Visualize Trends Over Time" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />

Example:

```sql theme={null}
WITH
	parseDateTimeBestEffort('{{filter.timeLimit.start}}') AS start_time,
	parseDateTimeBestEffort('{{filter.timeLimit.end}}') AS end_time,
	
	SELECT
		SpanAttributes['gen_ai.request.model'] AS model,
		CAST(COUNT(SpanAttributes['gen_ai.request.model']) AS INTEGER) AS model_count
	FROM
		otel_traces
	WHERE 
		SpanAttributes['gen_ai.operation.name'] != 'vectordb'
		AND notEmpty(SpanAttributes['gen_ai.request.model'])
		AND Timestamp >= start_time
		AND Timestamp <= end_time
	GROUP BY
		model
	ORDER BY
		model_count DESC
	LIMIT 3
```

## Configuration Options

* **Color palette**
* **X/Y label & value paths**

<Tip>
  Use dynamic bindings like `{{filter.timeLimit.start}}`, `{{filter.timeLimit.end}}` to make your chart respond to dashboard time filters.
</Tip>

## Best practices

* Sort bars by descending value for clearer insights
* Limit category count (e.g., top 10) to avoid clutter
