[python]受力分析数据可视化解决两个问题1.excel转json 2.渲染量过大
客户需求
公司有个项目,是北京某大学的项目,一个虚拟仿真项目,需要模仿一个国外的牛逼软件,我理解为一个受力分析的软件,大概的样子如下
这个图是我手头唯一的图片,实际上这个软件是做了一个三维的受力分析的,客户要求我们也做一个同样效果的图,客户那边根据那个外国软件可以生成一系列的数据,大概的样子如下
看到这个数据就比较尴尬了,我们把这个转为excel,并加入颜色看看效果.
我看了一下一共是2208的数据,这个数据量还比较小,上一次同样的数据,他们给我了2w+的数据量,这个时候我使用unity的epplus来读取这些数据,问题不大读到了,也表现出来了.
开工
使用unity编写了代码读取,具体的配置面板如下
技术问题
- 使用球体,面对2w个点的数据,根本没法应付
- 使用单canvas存在同canvas渲染层级的问题,想看效果的话,可以参考echarts里面的3d散点图
- 使用多canvas又存在和第一个问题相同的问题,渲染数量过大
技术定型
最终为了实现更好的效果,我们还是使用了单canvas的技术定型,因为可以渲染的更多,但是我们需要从后到前的顺序来渲染
因为如果渲染的顺序相反,会出现近的优先渲染,远的后渲染的问题
所以就只能尽可能的锁定视角,本来还想使用例子特效的效果,因为可以使用Billboard(广告牌)的渲染模式,但是还是消耗太大了,
为了方便研究他给的数据,我这边把每个点改成text,并显示对应的index效果如下
这样就可以发现,客户给的数据并不是规则的,从index中无法找到规律,所以只能使用如上的image(一个白色圆的方式)
只能通过圆的方式,看看效果了
问题
这个时候客户说,我们需要的是一个webgl的版本,这个时候我就要调整之前选中的几个技术
- 数据保存成excel,我需要把数据改成json的形式保存
- 消耗的问题,webgl的渲染量级肯定和PC端是没法比的,我需要降低当前的渲染数量,或者增加他的渲染量级的上线
解决
- 第一个解决的方法就是使用python来解决代码如下
# coding: utf-8
import pandas as pd
import json# 1. 读取一个excel
excel_reader = pd.ExcelFile('data.xlsx') # 指定文件# 2. 得到所有的sheets
sheet_names = excel_reader.sheet_names # 读取文件的所有表单名,得到列表# 3. 定义一个obj
sheets = {}# 4. 循环所有的sheets
for index in range(len(sheet_names)):# 5. 解析excel对应的sheet的数据df = excel_reader.parse(sheet_name=sheet_names[index])# 6. 得到我需要的列,并取十位小数sheet_obj_excel = df[['id', 'X', 'Y', 'Z','X-Dis', 'Y-Dis', 'Z-Dis']].round(10)# 7.把得到的数据转化为json字符串sheet_str_json = sheet_obj_excel.to_json(force_ascii=False)# 8. 得到json对象sheet_obj_json = json.loads(sheet_str_json)# 9. 把我们得到的sheet对象放到我们准备好多的sheets[index] = sheet_obj_json# 10. 首先是把json字符串变为json对象 然后在格式化 间距4个空格
data5 = json.dumps(sheets, indent=4,separators=(',', ':'), ensure_ascii=False)# 11. 写入对应的文件中
file_handle = open('excel2json1.json', mode='w')
file_handle.write(data5)
file_handle.close()
- 解决第二个问题比较棘手,现在唯一能想到的就是dots的方式来处理,但是可能无法达到我想象的效果,所以,还是需要调研一下,而且是否支持webgl,
2020年8月20日更新
因为公司不是很多人会python,有的时候会生成很多,为了照顾大部分人,升级到了自动识别,自动生成的版本
# coding: utf-8
import pandas as pd
import json
import os# 1. 文件夹路径
dirpath = r'铸铁压缩数据'# 2. 得到路径下的所有文件
for root, dirs, files in os.walk(dirpath):# 3. 循环这些文件for file in files:# 4. 得到这些文件的名字fname = os.path.splitext(file)# 5. 判断这些文件是否为excelif fname[1] == '.xlsx' or fname[1] == '.xls':# 7. 读取一个excelexcel_reader = pd.ExcelFile(os.path.join(root, file)) # 指定文件# 8. 得到所有的sheetssheet_names = excel_reader.sheet_names # 读取文件的所有表单名,得到列表# 9. 定义一个objsheets = {}# 10. 循环所有的sheetsfor index in range(len(sheet_names)):# 11. 解析excel对应的sheet的数据df = excel_reader.parse(sheet_name=sheet_names[index])# 12. 得到我需要的列,并取十位小数 时间(s) 力(kN) 位移(mm)sheet_obj_excel = df.round(10)# 13. 把得到的数据转化为json字符串sheet_str_json = sheet_obj_excel.to_json(force_ascii=False)# 14. 得到json对象sheet_obj_json = json.loads(sheet_str_json)# 15. 把我们得到的sheet对象放到我们准备好多的sheets[index] = sheet_obj_json# 16. 首先是把json字符串变为json对象 然后在格式化 间距4个空格data5 = json.dumps(sheets, indent=4,separators=(',', ':'), ensure_ascii=False)# 17. 得到生成json文件的名字jsonfilename = 'excel2json' + str(fname[0]) + '.json'# 18. 写入对应的文件中file_handle = open(jsonfilename, mode='w')file_handle.write(data5)file_handle.close()# 19. 输出转化完成print("转化完成\texcel文件:\t" + file + "\t-->\tjson文件:" + jsonfilename)# 20. 生成完毕,请验收你的json文件
print("-->所有文件都生成完毕了<--")
总结
- 解决问题的办法还是要从设计入手,
我感觉还是要从设计入手修改这个地方,如果单纯从技术方案来解决的话,很难达到满意的效果,国外的效果也不尽如人意,但是就是很好用,也不是单纯的说外国软件好,想一下,这些效果不是那么好的软件,他们的底层基础也是很久时间的积累,但是为什么他们不把效果不断的完善,而是专供数据呢,其实还是一个道理,就是数据才是真正有意义的 - 技术储备还是很重要的,人需要学习的地方还有很多
最近在搞项目管理的技术学习,并且在自己制作一个pmp的管理系统,php的知识也不是那么难学,python的知识也不是那么难学,但是多学一些,你能干的多了就是对自己的帮助,毕竟我是想做技术总监的男人.
[python]受力分析数据可视化解决两个问题1.excel转json 2.渲染量过大相关推荐
- Python爬虫以及数据可视化分析
Python爬虫以及数据可视化分析之Bilibili动漫排行榜信息爬取分析 简书地址:https://www.jianshu.com/u/40ac87350697 简单几步,通过Python对B站番剧 ...
- Python爬虫+数据分析+数据可视化(分析《雪中悍刀行》弹幕)
Python爬虫+数据分析+数据可视化(分析<雪中悍刀行>弹幕) 哔哔一下 爬虫部分 代码部分 效果展示 数据可视化 代码展示 效果展示 视频讲解 福利环节 哔哔一下 雪中悍刀行兄弟们都看 ...
- python爬虫及数据可视化分析
python爬虫及数据可视化分析 1.前言 2.数据爬取 2.1定位到爬取数据 2.2爬虫实现方法 3.数据可视化分析 3.1将短文学网的各类文章做一个统计 3.2对某一类文章进行分析 1.前言 本篇 ...
- 基于python的电影数据可视化分析与推荐系统
温馨提示:文末有 CSDN 平台官方提供的博主 Wechat / QQ 名片 :) 1. 项目简介 本项目利用网络爬虫技术从国外某电影网站和国内某电影评论网站采集电影数据,并对电影数据进行可视化分析, ...
- 命名管道 win7未响应_大数据分析Python建立分析数据管道
如果您曾经想通过流数据或快速变化的数据在线学习Python,那么您可能会熟悉数据管道的概念.数据管道允许您通过一系列步骤将数据从一种表示形式转换为另一种表示形式.数据管道是数据工程的关键部分,我们将在 ...
- Python房价分析和可视化<anjuke二手房>
Python房价分析和可视化<anjuke二手房> 本文是Python数据分析实战的房价分析系列,本文分析二线城市贵阳的二手房. 数据获取 本文的数据来源于2022年7月anjuke的二手 ...
- Python中的数据可视化工具与方法——常用的数据分析包numpy、pandas、statistics的理解实现和可视化工具matplotlib的使用
Python中的数据可视化工具与方法 本文主要总结了: 1.本人在初学python时对常用的数据分析包numpy.pandas.statistics的学习理解以及简单的实例实现 2.可视化工具matp ...
- Python房价分析和可视化<房天下二手房>
Python房价分析和可视化<房天下二手房> 本文是Python数据分析实战的房价分析系列,本文分析二线城市贵阳的二手房. 数据获取 本文的数据来源于2022年8月房天下的二手房数据.对数 ...
- Py之pyecharts:python包之数据可视化包pyecharts简介、安装、使用方法之详细攻略
Py之pyecharts:python包之数据可视化包pyecharts简介.安装.使用方法之详细攻略 目录 pyecharts简介 pyecharts的安装 pyecharts的使用方法 1.图形绘 ...
最新文章
- 查看centos系统配置详细信息
- 硕士毕业两年算法工程师年终总结
- 重写toString()
- linux安装python3.6_Linux环境下安装python3.6
- 《Windows via C/C++》学习笔记 —— “线程同步”之“检测死锁”
- leetcode 214. Shortest Palindrome | 214. 最短回文串(Java)
- 【计组实验】P4 Verilog多周期处理器微系统 MIPS指令集
- 计算机考研:计算机网络五大考点解析
- 18 SD配置-主数据-定义公用分销渠道
- matlab查看RGB图像矩阵数值
- pxe无人值守智能安装linux
- js 调用百度地图,并且定位用户地址,显示省市区街,经纬度
- 用python智能修复度盘防和谐链接~
- STM32F429 之EXTI外部中断
- C#如何调用阿里云短信接口
- 有没有中文域名SSL证书?如何申请
- Seurat | 不同单细胞转录组的整合方法
- 七、ref引用与数组的常用方法
- 高光谱影像伪彩色显示
- 报名入口就在这里 ABC Inspire·智能互联网峰会来了