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语言中没有必要。

相关推荐
·present·11 小时前
CSAPP(Bomb lab)
c语言·c++
wuminyu16 小时前
Java字节码学习总结:字节码如何加载、解析和执行
java·linux·c语言·jvm·c++
图灵-M19 小时前
【数据结构】静态 & 动态顺序表
c语言·数据结构·笔记
揽星河..19 小时前
【C语言】数组
c语言·开发语言·算法
水饺编程20 小时前
第2章:Linux 基础,制作【.tar.xz】压缩包文件
linux·c语言·汇编
揽星河..20 小时前
【C语言】函数
c语言·算法
zhippt_10141 天前
教师做课件太耗时?AI生成PPT工具与图转PPT实测梳理
人工智能·html·powerpoint
Navigator_Z1 天前
LeetCode //C - 1311. Get Watched Videos by Your Friends
c语言·算法·leetcode
winfredzhang1 天前
从零手写一个毛玻璃风格的页面搭建台:单文件 HTML 实现组件放置、面板磁吸与图层管理
前端·html
可乐_不渴1 天前
# C语言文件操作全解析:从 fopen 到 fclose,一文吃透文件 IO
linux·服务器·c语言