时间序列曲线ggplot2 r下的阴影

wi3ka0sx  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(96)

我有这个代码是为了做一个数字

milliseconds <- c(0,50,100,150,200,250,300)
force <- c(20,75,120,260,400,500,600)
data <- data.frame(miliseconds,force)

我需要在曲线下画0到50毫秒的阴影。
到目前为止我有

RFD <-ggplot(data = data, mapping = aes(x = miliseconds, y = force)) +
  geom_line(color="black", size=2) +
  geom_area(mapping = aes(x = ifelse(x>0 & x<50 , x, 0)),
        geom_params = list(fill = "red", alpha = 0.5)) +
  scale_y_continuous(limits = c(0, max(data$force)))
  geom_point(size=4, color="black") +
  theme_classic() +
  ggtitle("Rate of Force Developement")

RFD +scale_x_continuous(name = "Milliseconds",
                        breaks = seq(0, 300, 50),
                        limits=c(0, 300)) +
  scale_y_continuous(name = "Force")

##########

但我得到了一个错误,我不能ggproto对象在一起。有什么建议?

htrmnn0y

htrmnn0y1#

删 debugging 别字后,我认为主要的问题是在您设置的限制(> 0 & < 50)内没有数据。
但是你也应该把这个过滤器应用到geom_area中的data,和ggplot中的Map一样。我用了稍微不同的过滤器来获取至少一些数据。如果你把fillalpha放在美学之外,它会起作用。
您不必在scale_y_continuous中使用df$force
附言:

  • 我已经删除了图例,并在geom_line中使用了linewidth而不是size
  • 错误消息来自丢失的+
  • 不存在geom_params
library(tidyverse)

milliseconds <- c(0,50,100,150,200,250,300)
force <- c(20,75,120,260,400,500,600)
df <- data.frame(milliseconds,force)

RFD <- ggplot(data = df, mapping = aes(x = milliseconds, y = force)) +
  geom_line(color="black", linewidth=2) +
  geom_area(data = df |> filter(milliseconds > 0 & milliseconds < 150),
            mapping = aes(x = milliseconds, y = force), 
            fill = 'red', alpha = .5) +
  scale_y_continuous(name = 'Force', limits = c(0, max(force))) +
  scale_x_continuous(name = "Milliseconds",
                     breaks = seq(0, 300, 50),
                     limits=c(0, 300)) +
  geom_point(size=4, color="black") +
    theme_classic() + theme(legend.position = 'none') +
    ggtitle("Rate of Force Developement")

RFD

相关问题