Blog

Luis Majano

October 16, 2025

Spread the word


Share your thoughts

In the world of modern web applications, data is kingβ€”but raw numbers rarely tell the full story. πŸ“ˆ That's where visualization becomes crucial, transforming complex datasets into intuitive, compelling narratives. Today, we're thrilled to introduce BX-Charts, a game-changing charting module that brings professional-grade data visualization directly into the BoxLang ecosystem. 🌟

The Visualization Challenge 🧩

Developers have long struggled with creating meaningful charts:

  • πŸ”§ Complex JavaScript libraries
  • πŸ—οΈ Extensive configuration
  • πŸ“š Steep learning curves
  • 🚧 Limited flexibility

BX-Charts demolishes these barriers, offering a seamless, powerful charting solution that's both developer-friendly and enterprise-ready. πŸ’ͺ

Fully Documented

We love ❀️ docs! We have fully documented our module: https://boxlang.ortusbooks.com/boxlang-framework/modularity/charts

Fully Supported

If you have one of our +/++ licenses, you will get personalized support and implementation advice: https://www.boxlang.io/plans

Code Samples: Bringing Data to Life

1. Multi-Series Performance Analysis with Per-Series Border Styling

<bx:chart title="Quarterly Performance Analysis"
          chartwidth="700" chartheight="400"
          xaxistitle="Quarter" yaxistitle="Amount ($K)"
          showlegend="true"
          showygridlines="true"
          backgroundcolor="##ffffff">
    <bx:chartseries type="bar"
                    colorlist="3498db"
                    serieslabel="Revenue"
                    bordercolor="##2980b9"
                    borderwidth="3"
                    borderradius="8">
        <bx:chartdata item="Q1" value="125" />
        <bx:chartdata item="Q2" value="158" />
        <bx:chartdata item="Q3" value="142" />
        <bx:chartdata item="Q4" value="189" />
    </bx:chartseries>
    <bx:chartseries type="bar"
                    colorlist="e74c3c"
                    serieslabel="Expenses"
                    bordercolor="##c0392b"
                    borderwidth="2"
                    borderradius="4">
        <bx:chartdata item="Q1" value="95" />
        <bx:chartdata item="Q2" value="102" />
        <bx:chartdata item="Q3" value="98" />
        <bx:chartdata item="Q4" value="115" />
    </bx:chartseries>
</bx:chart>

2. Line Chart with Variable Border Widths

<bx:chart title="Website Traffic Trends"
          chartwidth="700" chartheight="400"
          xaxistitle="Month" yaxistitle="Visits (K)"
          showlegend="true"
          showygridlines="true"
          showmarkers="true"
          backgroundcolor="##ffffff">
    <bx:chartseries type="line"
                    colorlist="e74c3c"
                    serieslabel="Total Visitors (Primary)"
                    bordercolor="##c0392b"
                    borderwidth="5">
        <bx:chartdata item="Jan" value="125" />
        <bx:chartdata item="Feb" value="142" />
        <bx:chartdata item="Mar" value="158" />
        <bx:chartdata item="Apr" value="171" />
    </bx:chartseries>
    <bx:chartseries type="line"
                    colorlist="3498db"
                    serieslabel="Returning Visitors"
                    bordercolor="##2980b9"
                    borderwidth="2">
        <bx:chartdata item="Jan" value="45" />
        <bx:chartdata item="Feb" value="52" />
        <bx:chartdata item="Mar" value="61" />
        <bx:chartdata item="Apr" value="68" />
    </bx:chartseries>
</bx:chart>

3. Responsive Dashboard Layout

<div class="row g-3">
    <div class="col-lg-6">
        <bx:chart title="Sales"
                  chartwidth="400" chartheight="250"
                  responsive="true"
                  maintainAspectRatio="true">
            <bx:chartseries type="pie" colorlist="FF6384,36A2EB" serieslabel="Sales">
                <bx:chartdata item="Online" value="65" />
                <bx:chartdata item="Retail" value="35" />
            </bx:chartseries>
        </bx:chart>
    </div>
    <div class="col-lg-6">
        <bx:chart title="Traffic"
                  chartwidth="400" chartheight="250"
                  responsive="true"
                  maintainAspectRatio="true"
                  showygridlines="true">
            <bx:chartseries type="bar" colorlist="4BC0C0" serieslabel="Visitors">
                <bx:chartdata item="Mon" value="120" />
                <bx:chartdata item="Tue" value="150" />
                <bx:chartdata item="Wed" value="135" />
            </bx:chartseries>
        </bx:chart>
    </div>
</div>

4. Background and Font Styling

<bx:chart format="canvas" title="Font Styling Demo" 
          backgroundcolor="##ffffff"
          chartheight="300" chartwidth="600" 
          showlegend="true"
          fontbold="true" 
          fontitalic="true" 
          fontsize="14"
          foregroundcolor="##2E4057" 
          xaxistitle="Categories" 
          yaxistitle="Values">
    <bx:chartseries type="bar" 
                    colorlist="FF6B6B,4ECDC4,45B7D1" 
                    serieslabel="Styled Data">
        <bx:chartdata item="Item A" value="45" />
        <bx:chartdata item="Item B" value="32" />
        <bx:chartdata item="Item C" value="23" />
    </bx:chartseries>
</bx:chart>

5. Bubble Chart for Multi-Dimensional Analysis

<bx:chart title="Product Portfolio Analysis"
          chartwidth="600" chartheight="350"
          xaxistitle="Market Share (%)" 
          yaxistitle="Revenue (millions)"
          showxgridlines="true" 
          showygridlines="true">
    <bx:chartseries type="bubble" 
                    colorlist="9966FF,36A2EB,FF6384,FFCE56"
                    serieslabel="Products">
        <bx:chartdata item="Product A" x="20" y="85" r="15" />
        <bx:chartdata item="Product B" x="35" y="120" r="20" />
        <bx:chartdata item="Product C" x="15" y="65" r="10" />
        <bx:chartdata item="Product D" x="25" y="95" r="12" />
    </bx:chartseries>
</bx:chart>

Exploring the Possibilities πŸ”

We've built an interactive Chart Explorer at charts.boxlang.io, where you can:

  • Browse live chart examples
  • View source code
  • Experiment with different chart configurations
  • Learn best practices for data visualization

Installation πŸ”§

Get started with BX-Charts

# CommandBox Web Apps
box install bx-charts

# Core OS or Other Runtimes
install-bx-module bx-charts

Key Features

  • πŸ“Š 10 Chart Types
  • πŸ“± Fully Responsive
  • 🎨 Customizable Styling
  • πŸ”— Easy Data Integration
  • πŸš€ Performance Optimized

Developers, Unleash Your Data! 🌍

Whether you're building business intelligence dashboards, scientific visualizations, or performance reports, BX-Charts provides the flexibility and power you need. πŸ”

Ready to transform your data into insights? BX-Charts is here. 🌟

Explore Full Documentation

Add Your Comment

Recent Entries

Inherited a CFML Application With Few Tests? Here’s Where to Start!

Inherited a CFML Application With Few Tests? Here’s Where to Start!

You need to change an application that has been running for years.

It might be a ColdFusion customer portal, a Lucee application supporting internal operations, or a CFML system your team is preparing to modernize. People depend on it, but some of its behavior lives in old tickets, scattered documentation, and the memory of whoever has supported it longest.

Now a release is approaching. You know more testing would help. The difficult part is deciding where to begin without putting every other priority on hold.

Start with one important workflow and build evidence around what it needs to do.

Explore Ortus Quality Assurance Services

Maria Jose Herrera
Maria Jose Herrera
October 27, 2026
Your ColdFusion Upgrade Passed. Did Your Business Workflows?

Your ColdFusion Upgrade Passed. Did Your Business Workflows?

The server restarted. The administrator shows the expected version. Your homepage loads, and a few familiar screens look fine.

Would you tell the business the upgrade is complete?

Consider an illustrative scenario: a customer submits an order after an upgrade. The application saves it and displays a confirmation page. But the confirmation email never arrives, and the scheduled process that sends the order to fulfillment has not completed.

From the browser, the transaction...

Maria Jose Herrera
Maria Jose Herrera
October 22, 2026