如何转换 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 曲面图?的主要内容,如果未能解决你的问题,请参考以下文章