You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JSON输入实现pulseID数据的实时折线图展示需求

Real-Time Line Chart for PulseID JSON Data

Got it, let's build this real-time line chart step by step. I'll use Chart.js because it's straightforward, widely used, and handles real-time updates seamlessly. Here's a complete, working implementation tailored to your requirements:

Step 1: Set Up Basic HTML & Dependencies

First, we need a canvas element for the chart and the necessary Chart.js scripts (including a time adapter to handle X-axis time formatting):

<!-- Chart Container -->
<canvas id="pulseChart" style="width: 100%; height: 400px;"></canvas>

<!-- Chart.js Core -->
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<!-- Time Adapter for X-axis Time Scales -->
<script src="https://cdn.jsdelivr.net/npm/chartjs-adapter-date-fns/dist/chartjs-adapter-date-fns.bundle.min.js"></script>

Step 2: Initialize the Chart

We'll configure the chart to have a time-based X-axis and a numerical Y-axis for PulseID values:

// Get the canvas context
const ctx = document.getElementById('pulseChart').getContext('2d');

// Initialize the line chart
const pulseChart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [{
            label: 'PulseID Real-Time Trend',
            data: [], // Start with empty data for real-time updates
            borderColor: '#2196F3',
            backgroundColor: 'rgba(33, 150, 243, 0.1)',
            tension: 0.2, // Smooth the line slightly
            fill: true
        }]
    },
    options: {
        responsive: true,
        scales: {
            x: {
                type: 'time',
                time: {
                    unit: 'second', // Adjust to 'minute'/'hour' if needed
                    displayFormats: {
                        second: 'HH:mm:ss' // Format time for readability
                    }
                },
                title: {
                    display: true,
                    text: '*Time Interval*'
                },
                ticks: {
                    maxRotation: 45,
                    minRotation: 45
                }
            },
            y: {
                title: {
                    display: true,
                    text: '*PulseID Value*'
                },
                beginAtZero: false // Disable if PulseID values don't start at 0
            }
        },
        animation: {
            duration: 0 // Turn off animation for snappier real-time updates
        }
    }
});

Step 3: Handle Real-Time JSON Data

Next, we'll add logic to fetch/update data in real time. This example simulates incoming JSON data (replace the mock function with your actual data source like WebSocket or periodic API calls):

// Mock function to simulate incoming JSON data (replace with your data source)
function getRealTimePulseData() {
    // Example JSON data point (your actual data will have pulseID and timestamp)
    return {
        timestamp: new Date(), // Use actual timestamp from your JSON if available
        pulseID: Math.floor(Math.random() * 100) // Replace with your JSON's pulseID value
    };
}

// Update the chart with new data
function updateChart() {
    const newDataPoint = getRealTimePulseData();
    
    // Convert JSON data to chart-compatible format
    const chartPoint = {
        x: new Date(newDataPoint.timestamp),
        y: newDataPoint.pulseID
    };

    // Add new point to the chart
    pulseChart.data.datasets[0].data.push(chartPoint);

    // Keep only the last 30 data points to avoid chart clutter
    if (pulseChart.data.datasets[0].data.length > 30) {
        pulseChart.data.datasets[0].data.shift();
    }

    // Refresh the chart
    pulseChart.update();
}

// Update every 1 second (adjust interval based on your data frequency)
setInterval(updateChart, 1000);

Handling Batch JSON Arrays

If you receive a batch of historical/real-time JSON data (like [{"timestamp": "...", "pulseID": 12}, ...]), use this function to load all points at once:

function loadBatchJsonData(jsonArray) {
    const formattedData = jsonArray.map(item => ({
        x: new Date(item.timestamp),
        y: item.pulseID
    }));
    pulseChart.data.datasets[0].data = formattedData;
    pulseChart.update();
}

// Example usage:
// loadBatchJsonData(yourJsonArrayFromApi);

Key Notes

  • Time Formatting: Adjust the unit and displayFormats in the X-axis settings to match your data's time interval (seconds, minutes, etc.).
  • Data Source Integration: Replace the getRealTimePulseData function with your actual data retrieval logic—this could be a WebSocket listener, fetch call to an API endpoint, or any other real-time data stream.
  • Performance: Limiting the number of displayed data points (like keeping the last 30) ensures the chart stays responsive even with long-running updates.

Let me know if you need help adapting this to your specific data structure or edge cases!

内容的提问来源于stack exchange,提问作者Tippabhatla Niharika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:10:43