Garmonbozia:使用r查看Garmin csv数据

4月9日,二千零一十九
通过

(本文首次发表于 RStats–定量,并对 188bet appR博主

Garmin Connect内置了许多绘图,但是要深入了解你所有的健身数据,您需要导出一个csv并启动r。这篇文章是对运行数据的一些可能性的快速指南。

我想看一些东西。例如,一年来我的速度是如何变化的?与往年相比如何?如果我看到一些趋势,短跑和长跑也是这样吗?我想看看我每年跑步的累计距离……有很多事情需要分析。

Garmin Connect有一种将数据导出为csv的简单方法。还有其他方法来获取数据,但是Web界面非常简单。要导出数据的csv,前往Garmin Connect网站,登录并选择活动,所有活动。在这一页上,筛选要导出的任何活动。我点击了运行(如果你想的话,你可以再过滤一些)。然后向下滚动,让数据加载到页面上,直到回到我想要的地方。在右上角,单击导出csv,将下载页面上显示的内容。

生成这些图的代码,可以找到一些假数据在这里.

现在在R,加载到csv文件中

require(ggplot2)require(dplyr)require(hms)file_name<-file.choose()df1<-read.csv(file_name,头=真,字符串因子=假)

我们有一个数据框架,但我们需要重新调整日期和其他几列,然后才能开始绘制绘图。

#将日期列格式化为posixct df1$date<-as.posixct(strptime(df1$date,format=”%y-%m-%d%h:%m:%s”))format avg.pace to posixct df1$avg.pace<-as.posixct(strptime(df1$avg.pace,,format=“%m:%s”))使用ifelse df1$type<-ifelse(df1$distance<5,使不同距离的组“<5公里”ifelse(df1$距离<8,“5-8公里”,ifelse(df1$距离<15,“8-15公里”,“>15 km”))为这些设置系数,以便在我们设置plotdf1$type_f=factor(df1$type,等级=C(“<5公里”、“5-8公里”、“8-15公里”,“>15公里”)

现在我们可以做第一个情节了。第一个代码如下:其他绘图的所有代码如下所示。

#绘制出随时间变化的平均速度p1<-ggplot(数据=df1,aes(x=日期,y=平均速度,color=Distance))+geom_point()+scale_y_datetime(日期\u labels=“%m:%s”)+geom_smooth(color=“orange”)+labs(x=“date”,y=“平均速度(分钟/公里)”)

其他绘图的其余代码如下所示。代码被注释。对于一些情节,需要对数据帧做一些额外的工作。

#绘制出按距离分组的相同数据p2<-ggplot(数据=df1,aes(x=日期,y=平均速度,组=color=type_f))+geom_point()+scale_y_datetime(date_labels=“%m:%s”)+geom_smooth()+labs(x=“date”,y=“平均速度(min/km)”,colour=null)+facet_grid(~ type_f)现在查看步幅长度。首先删除zerosdf1[df1==0]<-na现在查找最早的有效日期v<-df1$date将日期更改为na,其中没有avg stead datadate v<-as.date.posixct(ifelse(df1$avg.stead.length>0,DF1 $日期,na)查找X轴最短日期<-min(日期v,na.rm=true)最新日期<-max(日期na.rm=true)使plotp3<-ggplot(data=df1,aes(x=日期,y=平均步幅长度,组=color=type_f))+geom_point()+ylim(0,na)+xlim(as.posixct(最早日期)as.posixct(最新的\u date))+geom \u smooth()+labs(x=“date”,y=“平均步幅长度(m)”,colour=null)+facet_grid(~ type_f)df1$avg.hr<-as.numeric(as.character(df1$avg.hr))p4<-ggplot(data=df1,aes(x=日期,y=平均小时,组=color=type_f))+geom_point()+ylim(0,na)+xlim(as.posixct(最早日期)as.posixct(最新的\u date))+geom \u smooth()+labs(x=“date”,y=“平均心率(bpm)”,colour=null)+facet_grid(~ type_f)绘制出以年份5<-ggplot(data=df1,aes(x=距离,y=平均速度,color=date))+geom_point()+scale_y_datetime(date_labels=“%m:%s”)+geom_smooth(color=“orange”)+labs(x=“Distance(km)”,y=“Average Pace(Min/km)”)制定年份日期系数,以将plotsDF1$year<-格式(as.date(df1$date,FORMAT=%d/%m/%y”),%y”)p6<-ggplot(data=df1,aes(x=距离,y=平均速度,组=年,color=year))+geom_point()+scale_y_datetime(date_labels=“%m:%s”)+geom_smooth()+labs(x=“距离”,y=“Average Pace(Min/km)”)+Facet_Grid(~ Year)Accumulative Sum over YearsDf1<-Df1[订单(as.date(df1$date)),]Df1<-Df1%>%Group_by(Year)%>%Mutate(Cumsum=Cumsum(Distance))P7<-Ggplot(数据=Df1,aes(x=日期,y=cumsum,组=年,color=year))+geom_line()+labs(x=“date”,y=“cumulative distance(km)”)绘制这些叠加的累积总和找到每个的元旦,然后计算出从f1$nyd<-粘贴(df1$year,“-01-01”,sep=)df1$day s<-as.date(df1$date,FORMAT=“%y-%m-%d”)—as.日期(as.字符(df1$nyd),FORMAT=”%y-%m-%d”)35;使plotp8<-ggplot(data=df1,aes(x=天,y=cumsum,组=年,color=year))+geom_line()+scale_x_continuous()+labs(x=“days”,y=“累计距离(km)”)

最后,我们可以使用ggsave保存所有的图。

#保存所有plotsggsave(“allspace.png”,图=P1,宽度=8,高度=4,dpi=“print”)ggsave(“pacebydist.png”,图=P2,宽度=8,高度=4,dpi=“print”)ggsave(“steadbydist.png”,图=P3,宽度=8,高度=4,dpi=“print”)ggsave(“hrbydist.png”,图=P4,宽度=8,高度=4,dpi=“print”)ggsave(“allspacebydist.png”,图=P5,宽度=8,高度=4,dpi=“print”)ggsave(“pacebydisbyyear.png”,图=P6,宽度=8,高度=4,dpi=“print”)ggsave(“cumulativedistbyyear.png”,图=P7,宽度=8,高度=4,dpi=“print”)ggsave(“cumulativedistpoverlay.png”,图=P8,宽度=8,高度=4,DPI =“打印”

我认为如果不记录我所做的所有字段,代码可能会失败。例如,如果心率数据丢失或未记录步幅长度,我不知道代码会做什么。这里的目的是给出一个概念,即仅使用由Garmin提供的csv中的摘要数据就可以生成什么样的图。请在下面的评论中提出建议。

-

这篇文章的标题来自“Garmonbozia”,作者是“Superdrag”,来自遗憾的你的专辑。显然,在电视连续剧《双峰》中,黑屋里的恶魔们正在吃加蒙博齐亚。

留下评论作者,请关注他们博客上的链接和评论: RStats–定量.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学大数据, r作业,可视化(可视化) GGPROTT2箱形图地图动画)程序设计(程序) 演播室斯威夫特乳胶SQL日食吉特哈多普刮网)统计 回归主成分分析时间序列交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件推特1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers


赞助商

千万不要错过更新!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)