Skip to main content
v2.2

Bar Chart

Chart type for visualizing categorical data as Bars. Supports Positive and Negative data sets (baseline 0), and Bipolar data sets. These are automatically detected.

Bar ChartBar Chart

Creating Bar Chart​

import lightningchart as lc

chart = lc.BarChart(vertical=True, theme=lc.Themes.Light, title='Bar Chart')

Basic Bar Chart​

Use set_data([{ category, value, color? }]) to create a simple bar chart with one value per category.
You can optionally provide a color field per item to override the default bar color.

chart.set_data([
{'category': 'Apples', 'value': 42, 'color': '#ff0000'},
{'category': 'Bananas', 'value': 34, 'color': '#ffff00'},
{'category': 'Oranges', 'value': 27, 'color': '#ffa500'},
])

Stacked Bar Chart​

Use set_data_stacked(categories, data) to create stacked bar charts. Useful for visualizing part-to-whole relationships. Each subcategory can optionally define a color to control the bar segment color.

chart.set_data_stacked(
['Q1', 'Q2'],
[
{'subCategory': 'Product A', 'values': [20, 35], 'color': '#1f77b4'},
{'subCategory': 'Product B', 'values': [15, 25], 'color': '#ff7f0'},
]
)
Stacked Bar ChartStacked Bar Chart

Grouped Bar Chart​

Use set_data_grouped(categories, data) for grouped bars to compare subcategories side-by-side. Each subcategory can optionally define a color to control the bar color.

chart.set_data_grouped(
['2023', '2024'],
[
{'subCategory': 'North', 'values': [120, 140], 'color': '#1f77b4'},
{'subCategory': 'South', 'values': [90, 110], 'color': '#ff7f0'},
]
)
Grouped Bar ChartGrouped Bar Chart

Histogram​

To visualize frequency distributions, treat bar chart data as histogram bins.

values = np.random.normal(0, 1, 100000)
counts, bin_edges = np.histogram(values, bins=100)

bar_data = [
{"category": f"{bin_edges[i]:.2f}–{bin_edges[i+1]:.2f}", "value": int(count)}
for i, count in enumerate(counts)
]

chart.set_data(bar_data)
HistogramHistogram

Horizontal Bar Charts​

Bar charts are vertical by default, but they can be rotated by supplying an option during creation time:

chart = lc.BarChart(
vertical=False,
theme=lc.Themes.Light,
title='Bar Chart'
)

Real-time data​

To connect real-time data to a Bar Chart, simply call set_data (or set_data_stacked / set_data_grouped) repeatedly to update previously displayed data.

Appearance Customization​

Customize the look and layout of your Chart using the following methods.

Title​

chart.set_title_color('#3498db')
chart.set_title_font(size=20, weight='bold')
chart.set_title_margin(10)
chart.set_title_rotation(0)
chart.set_title_effect(True)

Padding​

Adjusts the space around the chart's plot area.

chart.set_padding(10)  # Uniform padding
chart.set_padding(left=10, top=15) # Specific sides
chart.set_padding(left=10, top=15, right=20, bottom=25) # All sides

Background Color​

Sets the background fill color of the chart.

chart.set_background_color("#ffffff")

Background Stroke​

Defines the border (stroke) around the chart's background.

chart.set_background_stroke(2, "#cccccc")

Value Labels​

Bar labels could be configured using set_value_labels methods:

chart.set_value_labels(enabled=True, position="after-bar", format_type="currency")

Sorting​

By default, Bar charts sort data in Descending order. This can be selected using chart.set_sorting("descending") method:

chart.set_sorting("descending")

Automatic Label Fitting​

To enable or disable automatic label fitting:

chart.set_label_fitting(True)

Bar Appearance​

Effects and Colors​

chart.set_bars_effect(True)
chart.set_subcategory_color('Q1', 'Product A', '#00ff00')

Margins and Animation​

chart.set_bars_margin(0.1)
chart.set_animation_values(True)
chart.set_animation_category_position(True)

Palette Coloring​

Use value-based palette coloring to apply stepped color based on data values.

chart.set_palette_colors(
steps=[
{'value': 0, 'color': (0, 128, 255), 'label': 'Min'},
{'value': 5, 'color': (0, 255, 0)},
{'value': 10, 'color': (255, 128, 0), 'label': 'Max'},
],
look_up_property='y',
percentage_values=False,
)

Bar Colors​

Set a uniform color for all bars or specific colors for each category.

chart.set_bars_color("#3498db")            # Global color
chart.set_bar_color("Oranges", "#f39c12") # Specific category color

Axes Configuration​

Bar chart axes are separated into two groups: Value axis and Category axis. Here is how they could be configured:

Category Axis​

Style the category axis tick labels and ticks. Supports font family/size/weight/style, color, rotation, alignment, margins, and tick styling.

# Bold labels with custom color
chart.set_category_axis_labels(size=12, weight="bold")

# Full customization
chart.set_category_axis_labels(
size=16,
family='Arial, Helvetica, sans-serif',
style='italic',
weight='bold',
color='#ff6600',
rotation=30,
alignment=0,
margin=8,
shadow='#00000020',
tick_length=8,
tick_style={'thickness': 2, 'color': '#0000FF'},
)

Value Axis​

Configure the Y-axis tick labels major/minor font size, family, style, weight, major/minor color, rotation and numeric formatting (style, precision, unit suffix, scaling) for Y-axis tick labels.

chart.set_value_axis_labels(major_size=12)
chart.value_axis.set_tick_strategy('Numeric')
chart.value_axis.set_decimal_precision(2)

# Compact thousands with unit
chart.set_value_axis_labels(
format_type='thousands', # 1.2K, 3.4M, 5.6B...
precision=1,
unit=' items',
)

# Currency with two decimals
chart.set_value_axis_labels(
format_type='currency', # e.g., 1,234.56 €
precision=2,
unit=' €',
major_size=13,
major_color='#333',
)

Coordinate Transformation​

Bar charts use category-based coordinates. Transformations enable precise positioning and mouse interaction handling.

# Bars coordinates to relative pixels
relative = chart.translate_coordinate(
{'iCategory': 0, 'value': 50},
target='relative',
source='bars'
)

# Relative to bars coordinates
bars = chart.translate_coordinate(
{'x': 200, 'y': 300},
target='bars',
source='relative'
)

# Client to bars (auto-detect source)
bars = chart.translate_coordinate(
{'clientX': 500, 'clientY': 400},
target='bars'
)
Coordinate Systems
  • bars: Category index (iCategory) and value along value axis
  • relative: Pixels from chart edges
  • client: Browser viewport pixels

Disable/Enable animations​

# To disable or enable all animations of the Chart
chart.set_animations_enabled(True)

Add TextBox​

Please see common TextBox section.

Cursors​

Please see common Cursors section.

Legend​

Please see common legend section.

Examples​

Link to the examples