首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为多列应用代码?

如何为多列应用代码?
EN

Stack Overflow用户
提问于 2022-06-15 15:30:22
回答 2查看 87关注 0票数 0

我是R的新手,我有下面的示例代码,我希望应用于我的数据中的每一列。

代码语言:javascript
复制
data(economics, package="ggplot2")
economics$index <- 1:nrow(economics)
loessMod10 <- loess(uempmed ~ index, data=economics, span=0.10)
smoothed10 <- predict(loessMod10)
plot(economics$uempmed, x=economics$date, type="l", main="Loess Smoothing and Prediction", xlab="Date", ylab="Unemployment (Median)")
lines(smoothed10, x=economics$date, col="red")

有人能给我建议一下这怎么可能吗?

EN

回答 2

Stack Overflow用户

发布于 2022-06-16 08:30:20

这是有可能进行黄土平滑在全球范围内。

代码语言:javascript
复制
library(data.table)
library(ggplot2)
df <- economics
##
#
gg.melt <- setDT(df) |> melt(id='date', variable.name = 'KPI')
ggplot(gg.melt, aes(x=date, y=value))+
  geom_line()+
  stat_smooth(method=loess, color='red', size=0.5, se=FALSE, method.args = list(span=0.1))+
  facet_wrap(~KPI, scales = 'free_y')

关于把所有的东西结合在一起,我看不出你会怎么做,因为y尺度是如此的不同。如果重点是查看峰是如何排列起来的,那么您可以这样做:

代码语言:javascript
复制
ggplot(gg.melt, aes(x=date, y=value))+
  geom_line()+
  stat_smooth(method=loess, color='red', size=0.5, se=FALSE, method.args = list(span=0.1))+
  facet_grid(KPI~., scales = 'free_y')

还有一个dygraphs包,它允许创建动态图形,可以保存到html中:

代码语言:javascript
复制
gg.melt[, scaled:=scale(value, center = FALSE, scale=diff(range(value))), by=.(KPI)]
gg.melt[, pred:=predict(loess(scaled~as.integer(date), .SD, span=0.1)), by=.(KPI)]
gg.dt <- dcast(gg.melt, date~KPI, value.var = list('scaled', 'pred'))
library(dygraphs)
dygraph(gg.dt) |>
  dyCrosshair(direction = 'vertical') |>
  dyRangeSelector()

可以创建第二个图的dygraph(...)版本,其中不同的KPI处于不同的方面,但必须使用RMarkdown。

票数 1
EN

Stack Overflow用户

发布于 2022-06-15 15:34:23

您可以按日期将数据从宽到长,并使用facet_wrap。也许你想要这样的东西:

代码语言:javascript
复制
library(ggplot2)
library(reshape2)
library(dplyr)

economics %>%
  melt(., "date") %>%
  ggplot(., aes(date, value)) + 
  geom_line() + 
  facet_wrap(~variable, scales = "free")

输出:

注释:一张图中的所有情节

如果您指的是一个图中的所有图,您可以给变量一个如下的颜色:

代码语言:javascript
复制
economics %>%
  melt(., "date") %>%
  ggplot(., aes(date, value, color = variable)) + 
  geom_line() + 
  scale_y_log10()

输出:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72634082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档