c语言将csv文件中的XY轴数据转换为html波形图

目标:

c语言实现一个最简化的csv转html波形图显示方案。

csv文件格式:

共两行数据,第一行是x轴数据,第二行是y轴数据。

csv文件名分为3段: 波形图名称,x轴名称,y轴名称。

c代码:

int csv2html_wave(csv_file_name,html_file_name);

html代码:

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SimpleWave</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.7.1/chart.min.js"></script>
</head>
<body>
    <canvas id="SimpleWave"  width="800" height="300" style="margin-left: 20px;"></canvas>
    <script>
        var canvas = document.getElementById('SimpleWave');
        var ctx = canvas.getContext('2d');
        var dataX = [1,2,3.5,4,5,6,7,8,9,10];//用csv第一行替换这里
        var dataY = [10,20,30,40,50,60,70,80,90,100];//用csv第二行替换这里
        var minX = Math.min.apply(null, dataX);
        var maxX = Math.max.apply(null, dataX);
        var stepX =(maxX-minX)/(dataX.length-1);
        var minY = Math.min.apply(null, dataY);
        var maxY = Math.max.apply(null, dataY);
        var stepY =(maxY-minY)/(dataY.length-1);
        var dataXY = dataX.map(function(x, index) {
            return { x: x, y: dataY[index] };
        });
        var chart = new Chart(ctx, {
            type: 'line',
            data: {
                datasets: [{
                    label: '(x=mp_avx,y=speedup)',//用csv文件名信息替换这里
                    data: dataXY,
                    borderColor: 'rgba(255, 99, 132, 1)',
                    borderWidth: 1,
                    fill: false
                }]
            },
            options: {
                animation: {
                    duration: 0
                },
                scales: {
                    x: {
                        type: 'linear',
                        position: 'bottom',
                        min: minX,
                        max: maxX,
                        ticks: {
                            stepSize: stepX,
                            callback: function(value, index, values) {
                                return value + ' ';
                            },
                            font: {
                                size: 14,
                                weight: 'bold'
                            }
                        }
                    },
                    y: {
                        min: minY,
                        max: maxY,
                        ticks: {
                            stepSize: stepY,
                            callback: function(value, index, values) {
                                return value + ' ';
                            },
                            font: {
                                size: 14,
                                weight: 'bold'
                            }
                        }
                    }
                },
                title: {
                    display: true,
                    text: 'SimpleWave'
                }
            }
        });
        chart.update();
    </script>
</body>
</html>

效果图:

TODO:

XY轴的箭头。

XY轴显示范围外扩,让线条显示在范围内。

这些都不重要,实现出来会增加html代码量,在c语言中没有必要。

相关推荐
前端无冕之王24 分钟前
一份兼容多端的HTML邮件模板实践与详解
前端·css·数据库·html
啃火龙果的兔子30 分钟前
js获取html元素并设置高度为100vh-键盘高度
javascript·html·计算机外设
二级小助手2 小时前
C语言二级考试环境配置教程【window篇】
c语言·全国计算机二级·c语言二级·二级c语言·全国计算机二级c语言·c二级
kyle~3 小时前
C/C++---前缀和(Prefix Sum)
c语言·c++·算法
lidashent3 小时前
c语言-内存管理
java·c语言·rpc
这里没有酒3 小时前
[C语言] 指针的种类
c语言
_OP_CHEN3 小时前
数据结构(C语言篇):(二)顺序表
c语言·数据结构·学习笔记·入门·顺序表·动态顺序表·静态顺序表
knd_max4 小时前
C语言:数据在内存中的存储
c语言
YxVoyager5 小时前
【C++标准库】<ios>详解基于流的 I/O
c语言·c++
wuzuyu3656 小时前
SyntaxError: Failed to execute ‘open‘ on ‘XMLHttpRequest‘: Invalid URL
ajax·html·api