在进行轨迹规划时,较容易得到空间轨迹的位置点信息,将这些位置点存储下来,使用gunplot
等工具绘图,可以看到整体运动过程,但是只能看到静止图像,无法看到运动过程。
使用 python
的matplotlib
可以将运动过程导出为gif
或者mp4
等格式的文件,进行动态展示。但是依旧是静态文件,无法与文件进行交互。
使用R语言及其plotly
包,可以实现轨迹动态展示,以及与文件进行简单交互。下面对其使用方式进行简单介绍。
The R Project for Statistical Computing
Plotly R Graphing Library
RStudio | Open source & professional software for data science teams
安装
仅需安装R语言包即可。RStudio可选。安装完成后,进行环境变量设置。
建议使用scoop
进行安装。
文件
首先是轨迹的数据文件,二维轨迹文件如下,代表x和y轴,中间以空格分开,文件名data.txt
:
0.5 0
0.5 0.000314159
0.5 0.000628318
0.499999 0.000942477
0.499998 0.00125664
0.499998 0.00157079
...
其次是r语言文件,它载入文件,产生控件,保存成网页graph.html
。文件名basic.r
:
library(plotly)
mydataframe <- read.table(file = "data_LineNumber.txt", header = FALSE, sep = " ")
p <- mydataframe %>%
plot_ly(
x = ~V2,
y = ~V3,
frame = ~V1,
type = 'scatter',
mode = 'markers',
showlegend = F
)
htmlwidgets::saveWidget(as_widget(p), "graph.html")
因为plotly
需要使用一个类似时间的变量,在载入文件时顺便载入到dataframe
里,故需要对data.txt
进行处理,给其每行前加上行号,当作时间变量。这里使用windows
的bat
进行处理,文件名AddLineNumber.bat
:
@echo off
set file=%1
set x=1
setlocal EnableDelayedExpansion
for /f "delims=|" %%i in (%file%) do (
echo !x! %%i
set /a x=!x!+1
)
最后是makefile
,编译文件:
Compiler = Rscript
DELETE = del
ADDLINENUMBER = AddLineNumber.bat
all: build
build:
#给数据文件加入行号
$(ADDLINENUMBER) data.txt > data_LineNumber.txt
#编译,产生网页
$(Compiler) basic.r
@echo Done.
clean:
@${DELETE} graph.html
@${DELETE} data_LineNumber.txt
四个文件齐备时,在命令行里执行make
即可产生 graph.html
,打开网页即可看到轨迹控件,点击play
,即可开始播放轨迹运动过程,播放过程中,可以放大、缩小、用鼠标展示位置等等。
但是当文件数据量大时,存在编译时间久,产生文件打开慢的问题。故展示数据量较小时,使用起来较为方便。
面对数据量大的问题,估计只能使用cpp+opengl或是c#+SharpDx自己开发了。