使用单个x值向ggplot添加多个函数

我有下表

> Test
# A tibble: 10 x 4
     Day Chemical   Amount    SE
   <int> <chr>       <dbl> <dbl>
 1     0 Chemical 1      5     1
 2     1 Chemical 1      4     1
 3     3 Chemical 1      3     1
 4     7 Chemical 1      2     1
 5    14 Chemical 1      1     1
 6     0 Chemical 2      6     1
 7     1 Chemical 2      5     1
 8     3 Chemical 2      4     1
 9     7 Chemical 2      3     1
10    14 Chemical 2      2     1

所以我创建了如下的ggplot

ggplot(Test,aes(x=Day,y=Amount,fill=Chemical)) +
  geom_point(aes(shape=Chemical)) 

Concentration of Chemical over time

然后我还要在ggplot中显示这两个函数。

a1 <- 100    
a11 <- 75

a2 <- 100 
a22 <- 80  
k1 <- 0.1 
k11 <- 0.01 

k2 <- 0.5 
k22 <- 0.01
f1 <- function(x) a1*exp(-k1*x)+a11*exp(-k11*x)
f2 <- function(x) a2*exp(-k2*x)+a22*exp(-k22*x)     

现在是我的问题:我该如何告诉ggplot我希望第一个函数(f1)取自“化学1”的x值(金额),第二个函数(f2)应当取自x的x值(金额) “化学2”?

mayflow 回答:使用单个x值向ggplot添加多个函数

这是2组(或您所用的2种化学药品)的快速解决方案。您只需对数据进行子集处理,然后调用geom_line仅在子集中应用该函数,然后对化学试剂2再次进行处理即可。

library(ggplot2)

    Test <- structure(list(Day = c(0L,1L,3L,7L,14L,0L,14L
    ),Chemical = structure(c(1L,2L,2L),.Label = c("Chemical 1","Chemical 2"),class = "factor"),Amount = c(5L,4L,6L,5L,SE = c(1L,1L)),class = "data.frame",row.names = c(NA,-10L))

    g <- ggplot(Test,aes(x=Day,y=Amount,fill=Chemical)) +
      geom_point(aes(shape=Chemical))

    g + 
    geom_line(data=subset(Test,Chemical=="Chemical 1"),aes(y=f1(Day),col="Chemical 1"))+
    geom_line(data=subset(Test,Chemical=="Chemical 2"),aes(y=f2(Day),col="Chemical 2"))

您有两个以上吗?

本文链接:https://www.f2er.com/3111349.html

大家都在问