Skip to Content
ChartsLine

Line Chart

This feature is only available in ESP-DASH Pro
Preview

Line charts are ideal for visualizing trends and changes in data over time or ordered categories. In ESP-DASH v5, the dash::LineChart<X, Y> class provides a flexible, type-safe way to create and update line charts with a variety of data types.

Initializer

To create a line chart, instantiate dash::LineChart<X, Y> with your dashboard instance and a descriptive title. The template parameters X and Y define the types for the X and Y axes, respectively. Choose types that match your data:

Example 1: String labels (days), integer values

// X-axis: days of the week (labels), Y-axis: water usage (int) dash::LineChart<const char*, int> line(dashboard, "Water Usage (L)");

Example 2: Integer X, float Y

// X-axis: time (seconds), Y-axis: temperature (float) dash::LineChart<int, float> line2(dashboard, "Temperature");

Example 3: Float X and Y

// X-axis: float (e.g., time), Y-axis: float (e.g., voltage) dash::LineChart<float, float> line3(dashboard, "Voltage");

Just make sure the arrays you pass to setX and setY match the types you specify in the template.

Callback

💡

Line charts are for data visualization and do not require a callback for user interaction.

Methods

setX(X arr_x[], size_t x_size)

Sets the values for the X-axis. The type of arr_x must match the template type you chose for X when creating the chart. For example, if you used const char* for X, pass an array of strings; if you used int, pass an array of integers.

// If X is const char* (labels): line.setX(XAxis, 7); // XAxis is const char*[] // If X is int: line2.setX(timeArray, 10); // timeArray is int[]
  • Signature: void setX(X arr_x[], size_t x_size)
  • Parameters:
    • X arr_x[] — Array of X-axis values.
    • size_t x_size — Number of elements in the array.
  • Returns: void

setY(Y arr_y[], size_t y_size)

Sets the values for the Y-axis. The type of arr_y must match the template type you chose for Y. For example, if you used int for Y, pass an array of integers; if you used float, pass an array of floats.

// If Y is int: line.setY(YAxis, 7); // YAxis is int[] // If Y is float: line2.setY(tempArray, 10); // tempArray is float[]
  • Signature: void setY(Y arr_y[], size_t y_size)
  • Parameters:
    • Y arr_y[] — Array of Y-axis values.
    • size_t y_size — Number of elements in the array.
  • Returns: void

x()

Returns a pointer to the current X-axis data array. The return type matches your template type for X.

// If X is const char*: const char** labels = line.x(); // If X is int: int* times = line2.x();
  • Signature: X* x()
  • Parameters: None
  • Returns: X* — Pointer to the current X-axis data array.

y()

Returns a pointer to the current Y-axis data array. The return type matches your template type for Y.

// If Y is int: int* values = line.y(); // If Y is float: float* temps = line2.y();
  • Signature: Y* y()
  • Parameters: None
  • Returns: Y* — Pointer to the current Y-axis data array.

Reference

Below is a complete example showing how to initialize and update a line chart in a real project. This demonstrates global data arrays, initialization, setup, updating values, and sending updates to the dashboard.

#include <ESPDashPro.h> ESPDash dashboard; dash::LineChart<const char*, int> line(dashboard, "Water Usage (L)"); // Global data arrays for chart const char* XAxis[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; int YAxis[] = {0, 0, 0, 0, 0, 0, 0}; void setup() { // ...dashboard/network setup... // Set X and Y axis data for the chart line.setX(XAxis, 7); line.setY(YAxis, 7); } void loop() { // Example: update YAxis values in real time static unsigned long lastUpdate = 0; if (millis() - lastUpdate > 5000) { // Every 5 seconds lastUpdate = millis(); // Simulate new data (e.g., random water usage) for (int i = 0; i < 7; i++) { YAxis[i] = random(0, 100); } // No need to call setY again; just update the array and send updates dashboard.sendUpdates(); } }
Last updated on
Copyright © 2025 Softt. All rights reserved.