Posts

Showing posts with the label server-sent events

Using D3 and Canvas to Visualize Data on NextJS

Image
Introduction In the previous article, I introduced how to use D3 to visualize data as charts. For most chart visualization needs, using D3 to create individual HTML DOM elements is sufficient. However, if you need to build a web application with superior performance to handle complex cases with relatively large datasets, then applying Canvas is a good solution for you Canvas is an HTML5 element that allows for extremely high-performance 2D graphic drawing via JavaScript. Unlike SVG, which creates separate DOM elements for each object, Canvas operates as a "blank canvas" where pixels are drawn directly onto a single surface. For instance, in real-world products like Figma, Canva, and TradingView, they all utilize Canvas to handle complex graphical operations. Outstanding advantages of Canvas include: superior render speed when processing thousands of objects simultaneously, memory resource savings as it does not increase the size of the DOM tree, and flexible customization for...

Build Charts with NextJS and D3.js

Image
Introduction D3.js (Data-Driven Documents) is a powerful JavaScript library for producing dynamic, interactive data visualizations from numerical data. Instead of providing pre-built charts, D3 offers low-level tools that allow you to manipulate DOM elements directly (typically SVGs, Canvas, or HTML). The advantages: Infinite Customization: You can create any type of chart you can imagine. High Performance: Smoothly handles large data sets and animated transitions. Strong Mathematical Ecosystem: Fully supports scale calculation functions, coordinate axis formatting, and complex geometric algorithms. Detail First, let's start with a simple example of drawing a line chart that describes monthly revenue during the year. Please create the file app/api/revenue/route.ts to simulate a 12-month revenue api with a random amount from 1000-6000 import {NextResponse} from 'next/server' export async function GET () { const data = Array. from ({ length: 12 }, ( _ , i ) => ...