如何转换 Excel 导入的数据以使用 Plotly 3D 曲面图?

Posted

技术标签:

【中文标题】如何转换 Excel 导入的数据以使用 Plotly 3D 曲面图?【英文标题】:How can I transform Excel imported data to use Plotly 3D surface graph? 【发布时间】:2021-04-27 18:13:40 【问题描述】:

我是新来的,对 R 来说相对较新。

我想将热图转换为表面 3D 图。

我有一个包含 2 列的 excel 文件:日期(天/毫米/年小时:分钟)和每小时平均转化率 (t/h) 我设法使用 mutate (day(date), month(date, label=true) 创建热图,以每小时创建 X,Y=days 并评估我的转化率。月/年方面。

现在一个月,我想用 Surface 3D,X:小时,y:天,Z:转化率

如何将我的数据框从 excel 转换为这个以创建 3D 表面(如火山示例)

【问题讨论】:

您好,欢迎来到 Stack Overflow。请编辑您的问题,使其包含一个最小的、可重复的示例。其他人会理解您正在尝试做的事情并可以提供有针对性的帮助。首先阅读本指南:***.com/help/minimal-reproducible-example 【参考方案1】:

好的,我设法得到了我想要的。

df<-test3  # test3 is a import file from exel, with two columns, date and conversion rate
df <- df %>% mutate(year = year(date),
month = month(date, label=TRUE),
day = day(date), hour=hour(date))   #Transform to date, month, day, hour, conversion rate

df2020<-filter(df,year==2020)
dfabr<-filter(df2020,month=="abr")   #Filter for year 2020 and month april , looks like this

stationid             day  hour month  year  rate
   <chr>               <int> <int> <ord> <dbl> <dbl>
 1 Tasa Fusión HF, t/h     1     0 abr    2020 127. 
 2 Tasa Fusión HF, t/h     1     1 abr    2020 130. 
 3 Tasa Fusión HF, t/h     1     2 abr    2020 130. 

---
**df_4=data.frame("x"=c(dfabr$day),"y"=c(dfabr$hour),"z"=c(dfabr$rate))** #Imported and filtered data to MATRIX

library(reshape2)  #for use in plotly 3d surface graphs like volcano example

**df3d<-acast(df_4,x~y, value.var="z",sum)**  #acast return matrix format, I add SUM because with a large data, i got message "Aggregation function missing: defaulting to length", I have no idea why, but when i used a small dataset with exact same code, i didn't get that. When i added "sum", error message disapeared 

library(plotly)

p <- plot_ly(z = df3d, type = "surface")
p 

成功了! x 是 dat 的小时数,y 是一个月中的天数,z 是转换率值。

【讨论】:

以上是关于如何转换 Excel 导入的数据以使用 Plotly 3D 曲面图?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从iOS中的Excel工作表导入数据[复制]

如何以日期格式转换特定excel文件的列?

如何以编程方式将 Excel 数据导入 Access 表?

如何将xml文件转换成excel电子数据表

Matlab:将从excel导入的日期转换为可读格式?

DELPHI中导入Excel时,存在格式问题,怎么解决?