繁体   English   中英

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

[英]shading under time-series curve ggplot2 r

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

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 object。 有什么建议么?

删除拼写错误后,我认为主要问题是您设置的限制( > 0 & < 50 )内没有数据。

但是您还应该将此过滤器应用于 geom_area 中的data ,其映射与geom_area中的ggplot 我使用略有不同的过滤器来获取至少一些数据。 如果您将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM