[英]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
。 我使用略有不同的过滤器来获取至少一些数据。 如果您将fill
和alpha
放在美学之外,它就会起作用。
您不必在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.