当前位置: 首页 > news >正文

html做一个分组散点图图的软件

在HTML中创建一个分组散点图,可以结合JavaScript库如D3.js或Plotly.js来实现。这些库提供了强大的数据可视化功能,易于集成和使用。下面是一个使用Plotly.js创建分组散点图的示例:
要添加文件上传功能,可以让用户上传包含数据的文件(例如CSV文件),然后使用JavaScript读取文件并生成散点图。下面是一个示例,展示了如何结合文件上传和用户输入生成分组散点图:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grouped Scatter Plot with User Input and File Upload</title><script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body><h1>Grouped Scatter Plot</h1><form id="dataForm"><h3>Group 1</h3><label for="group1x">X values (comma separated):</label><input type="text" id="group1x" name="group1x" value="1,2,3,4,5"><br><label for="group1y">Y values (comma separated):</label><input type="text" id="group1y" name="group1y" value="10,15,13,17,10"><br><h3>Group 2</h3><label for="group2x">X values (comma separated):</label><input type="text" id="group2x" name="group2x" value="1.5,2.5,3.5,4.5,5.5"><br><label for="group2y">Y values (comma separated):</label><input type="text" id="group2y" name="group2y" value="16,5,11,9,15"><br><h3>Group 3</h3><label for="group3x">X values (comma separated):</label><input type="text" id="group3x" name="group3x" value="2,3,4,5,6"><br><label for="group3y">Y values (comma separated):</label><input type="text" id="group3y" name="group3y" value="6,8,10,14,13"><br><button type="button" onclick="plotData()">Plot Data</button></form><h2>Or Upload CSV File</h2><input type="file" id="fileInput" accept=".csv"><button type="button" onclick="uploadFile()">Upload and Plot</button><div id="scatter-plot" style="width:100%;height:600px;"></div><script>function plotData() {var group1x = document.getElementById('group1x').value.split(',').map(Number);var group1y = document.getElementById('group1y').value.split(',').map(Number);var group2x = document.getElementById('group2x').value.split(',').map(Number);var group2y = document.getElementById('group2y').value.split(',').map(Number);var group3x = document.getElementById('group3x').value.split(',').map(Number);var group3y = document.getElementById('group3y').value.split(',').map(Number);var trace1 = {x: group1x,y: group1y,mode: 'markers',type: 'scatter',name: 'Group 1',marker: { size: 12 }};var trace2 = {x: group2x,y: group2y,mode: 'markers',type: 'scatter',name: 'Group 2',marker: { size: 12 }};var trace3 = {x: group3x,y: group3y,mode: 'markers',type: 'scatter',name: 'Group 3',marker: { size: 12 }};var data = [trace1, trace2, trace3];var layout = {title: 'Grouped Scatter Plot',xaxis: {title: 'X Axis'},yaxis: {title: 'Y Axis'}};Plotly.newPlot('scatter-plot', data, layout);}function uploadFile() {var fileInput = document.getElementById('fileInput');var file = fileInput.files[0];var reader = new FileReader();reader.onload = function(event) {var csvData = event.target.result;processCSVData(csvData);};reader.readAsText(file);}function processCSVData(csvData) {var lines = csvData.split('\n');var group1x = [], group1y = [], group2x = [], group2y = [], group3x = [], group3y = [];for (var i = 1; i < lines.length; i++) {var cols = lines[i].split(',');if (cols.length === 6) {group1x.push(parseFloat(cols[0]));group1y.push(parseFloat(cols[1]));group2x.push(parseFloat(cols[2]));group2y.push(parseFloat(cols[3]));group3x.push(parseFloat(cols[4]));group3y.push(parseFloat(cols[5]));}}var trace1 = {x: group1x,y: group1y,mode: 'markers',type: 'scatter',name: 'Group 1',marker: { size: 12 }};var trace2 = {x: group2x,y: group2y,mode: 'markers',type: 'scatter',name: 'Group 2',marker: { size: 12 }};var trace3 = {x: group3x,y: group3y,mode: 'markers',type: 'scatter',name: 'Group 3',marker: { size: 12 }};var data = [trace1, trace2, trace3];var layout = {title: 'Grouped Scatter Plot',xaxis: {title: 'X Axis'},yaxis: {title: 'Y Axis'}};Plotly.newPlot('scatter-plot', data, layout);}</script>
</body>
</html>

说明:

  1. HTML表单:用于用户手动输入每个组的X和Y值。
  2. 文件上传:提供了一个文件输入框和按钮,用于上传CSV文件。
  3. JavaScript函数
    • plotData:处理用户输入的数据并生成散点图。
    • uploadFile:读取用户上传的CSV文件,并调用processCSVData函数处理CSV数据。
    • processCSVData:解析CSV数据并生成散点图。

CSV文件格式:

CSV文件应该包含每组的X和Y值,按列排列,例如:

group1x,group1y,group2x,group2y,group3x,group3y
1,10,1.5,16,2,6
2,15,2.5,5,3,8
3,13,3.5,11,4,10
4,17,4.5,9,5,14
5,10,5.5,15,6,13

通过这种方式,用户既可以手动输入数据,也可以通过上传文件来生成分组散点图。你可以根据需要进一步调整和扩展代码。

在这里插入图片描述

相关文章:

  • 韩顺平0基础学java——第28天
  • Elasticsearch-ES查询单字段去重
  • 34.构建核心注入代码
  • C++ 61 之 函数模版
  • 【八股系列】shouldComponentUpdate是为了解决什么问题?(React)
  • CentOS OpenVPN 客户端连接配置
  • 椭圆的几何要素
  • 计算机专业的发展前景与选择建议。
  • 主流框架选择:React、Angular、Vue的详细比较
  • 【React】useState 的原理
  • 思聪私生女能继位吗?王健林表态,家族不会亏待
  • 常用的工具:pdf转换器、流程图
  • 视频汇聚安防综合管理系统EasyCVR平台GB28181设备注册未上线的原因排查与解决
  • Linux命令详解
  • vue生成二维码跳转到小程序
  • [nginx文档翻译系列] 控制nginx
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Debian下无root权限使用Python访问Oracle
  • ES6--对象的扩展
  • FineReport中如何实现自动滚屏效果
  • Just for fun——迅速写完快速排序
  • magento2项目上线注意事项
  • OSS Web直传 (文件图片)
  • PAT A1017 优先队列
  • spring + angular 实现导出excel
  • tensorflow学习笔记3——MNIST应用篇
  • vue脚手架vue-cli
  • 类orAPI - 收藏集 - 掘金
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端自动化解决方案
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 终端用户监控:真实用户监控还是模拟监控?
  • 阿里云重庆大学大数据训练营落地分享
  • 仓管云——企业云erp功能有哪些?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • (zhuan) 一些RL的文献(及笔记)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (黑马C++)L06 重载与继承
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十) 初识 Docker file
  • (十)T检验-第一部分
  • (十六)Flask之蓝图
  • (十一)手动添加用户和文件的特殊权限
  • (转)我也是一只IT小小鸟
  • .a文件和.so文件
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .net 调用php,php 调用.net com组件 --
  • .net 后台导出excel ,word
  • .net 获取某一天 在当月是 第几周 函数
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .net生成的类,跨工程调用显示注释
  • /var/log/cvslog 太大
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序