代码之家  ›  专栏  ›  技术社区  ›  Flovdis

如何从具有日期和时间值的表格创建三维绘图?

  •  0
  • Flovdis  · 技术社区  · 8 年前

    我刚接触R,尝试从服务器机架获取一年收集的温度数据的可视化表示。数据已经准备好并加载到R环境中的 data object中,格式如下:

    str(数据) “data.frame”:516496 obs。共5个变量: $day:posixct,格式:“2017-06-29”“2017-06-29”“2017-06-29”“2017-06-29”… $secondsofday:利息0 60 120 180 240 300 360 420 480 540… $temp:数字34.8 34.7 34.7 34.7 34.7 34.7…

    字段daycontains just the date,the字段secondsofdayis the second of the day,rounded to full minutes.该字段tempcontains the actual temperature value.

    我想创建这个数据的三维绘图,其中x轴是日期,y轴是一天中的时间。Z轴应为温度。

    理想情况下,我希望使用诸如perp等基本函数之一创建这样的图形(但使用正确的z值):。

    我的问题的核心是,为什么我还找不到自己的解决方案,因为绘图的示例使用函数和范围序列作为输入。我不理解如何将表格中的数据准备成绘图函数的正确格式。

    如上文所述生成绘图的简单方法是什么?data此格式的R环境中的对象:

    > str(data)
    'data.frame':   516496 obs. of  5 variables:
     $ Day         : POSIXct, format: "2017-06-29" "2017-06-29" "2017-06-29" "2017-06-29" ...
     $ SecondsOfDay: int  0 60 120 180 240 300 360 420 480 540 ...
     $ Temp        : num  34.8 34.7 34.7 34.7 34.7 ...
    

    这个领域Day只包含日期和字段SecondsOfDay是一天中的第二天,四舍五入为整分钟。这个领域Temp包含实际温度值。

    我想创建这个数据的三维绘图,其中x轴是日期,y轴是一天中的时间。Z轴应该是温度。

    理想情况下,我想使用persp要创建这样的图表(但使用正确的Z值):

    enter image description here

    我的问题的核心是,为什么我还找不到自己的解决方案,因为绘图的示例使用函数和范围序列作为输入。我不理解如何将表格中的数据准备成绘图函数的正确格式。

    生成上述绘图的简单方法是什么?

    1 回复  |  直到 8 年前
        1
  •  1
  •   AkselA    8 年前

    没有花哨的阴影,但这应该给你一个主意

    d<-rep(1:5,each=10)
    M<-代表((0:9)*144,5)
    V<-sin(序列(0,1,length.out=50)*2*pi*5)+(1:50)/50
    
    温度矩阵(v,ncol=10,byrow=true)
    
    par(mar=c(2,2,2,2)
    
    日<-唯一(D)
    TOD<-唯一(m)/60
    
    汗珠(天,tod,温度,theta=50,phi=20,
    ticktype=“detailed”,ylab=“一天中的时间(hr)”)
    

    基本上,将温度值分布在一个矩阵中,该矩阵的尺寸取自日期和分钟向量。
    我永远记不清它是不是byrow=true还是false,以及哪个向量决定了哪个维度,所以我只需用眼睛检查并更改内容,直到它看起来正确。

    其他一些选择

    library(plot3d)persp()的扩展
    persp3d(天,tod,温度,theta=50,phi=20)
    
    library(rgl)也与persp()相似,但是是交互式的
    persp3d(天,tod,温度,col=cm.颜色(100))
    

    enter image description here

    从本质上讲,你将温度值分布在一个矩阵中,这个矩阵的尺寸取自日期和分钟向量。
    我不太记得是不是byrow=TRUE或FALSE,哪个向量决定了哪个维度,所以我只需要用眼睛检查,然后把事情向上改变,直到它看起来正确为止。

    其他一些选择

    library(plot3D) # an extension of persp()
    persp3D(day, tod, temperature, theta=50, phi=20)
    
    library(rgl) # also similar to persp(), but interactive
    persp3d(day, tod, temperature, col=cm.colors(100))