簡體   English   中英

沒有顯示ggplot2上的Stat_smooth

[英]Stat_smooth on ggplot2 not showing

我試圖在我的ggplot中添加一行lm,代碼如下所示:

# RING data:
#### Read data & Converting factors ####
dat <- read.table("RING R kopi.txt", header=TRUE)  
str(dat)
dat$Vial <- as.factor(dat$Vial)
dat$Line <- as.factor(dat$Line)
dat$rep <- as.factor(dat$rep)
dat$fly <- as.factor(dat$fly)  
str(dat)

datSUM <- summaryBy(t05+t10+t15+t20+t25+t30~rep+Conc+Sex+Line+Vial,data=dat, FUN=sum)
fl<-levels(datSUM$Line)
datA <- droplevels(datSUM[datSUM$Conc=="a",])
datB <- droplevels(datSUM[datSUM$Conc=="b",])
datC <- droplevels(datSUM[datSUM$Conc=="c",]) 
datD <- droplevels(datSUM[datSUM$Conc=="d",])
datE <- droplevels(datSUM[datSUM$Conc=="e",])
datX <- droplevels(datSUM[datSUM$Conc=="x",])
datY <- droplevels(datSUM[datSUM$Conc=="y",])


c <- ggplot(Line, t05.sum, data= datA, facets=Sex~rep)
c + stat_smooth(method=lm, fullrange = TRUE) + geom_point()

該腳本運行但沒有添加任何行,我也嘗試過使用

c + stat_smooth(method=lm) + geom_point()
c + stat_smooth(method=lm, fullrange=TRUE, alpha = 0.05) + geom_point()
c <- qplot(aes(y=Line, x=t05.sum), data= datA, facets=Sex~rep)
c + stat_smooth(method=lm, fullrange = TRUE) + geom_point()

結果: 在此輸入圖像描述

數據集子集:

結構(列表(rep =結構(c)(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L, 1L,1L,1L,1L,1L),. Label = c(“1”,“2”,“3”),class =“factor”),Conc =結構(c(1L,1L,1L,1L, 1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L),。標簽=“a”, class =“factor”),性別=結構(c(1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L,1L ,1L,2L,2L,2L,2L,2L),. Label = c(“f”,“m”),class =“factor”),線=結構(c(1L,1L,1L,1L,1L) ,2L,2L,2L,2L,2L,3L,3L,3L,3L,3L,4L,4L,4L,4L,4L,1L,1L,1L,1L,1L),。標簽= c(“20” ,“23”,“40”,“73”),類=“因子”),Vial =結構(c(3L,14L,24L,31L,38L,4L,12L,21L,26L,35L,6L,8L) ,9L,37L,40L,2L,10L,11L,28L,33L,13L,15L,18L,22L,27L),.標簽= c(“89”,“92”,“102”,“112”,“ 113“,”118“,”124“,”126“,”137“,”138“,”139“,”152“,”154“,”155“,”161“,”163“,”166“ ,“168”,“171”,“173”,“179”,“182”,“184”,“185”,“187”,“201”,“ 203“,”205“,”215“,”218“,”220“,”222“,”225“,”231“,”240“,”245“,”251“,”252“,”260“ ,“267”),類=“因子”),t05.sum = c(39.15,63.99,44.55,25.65,54.24,8.37,72.09,19.17,56.43,78.24,140.13,29.43,19.71,100.32,92.16,11.61 ,71.55,76.41,123.39,142.29,56.97,66.15,21.33,66.15,33.75),t10.sum = c(59.67,79.65,60.21,8.91,85.44,15.93,101.79,41.85,76.95,84.96,98.55,36.45, 31.59,115.2,92.16,26.88,90.99,95.31,127.17,173.61,74.79,81.27,38.61,80.73,101.25),t15.sum = c(78.57,107.73,80.73,59.67,118.56,39.15,98.01,75.33,76.95 ,90.24,122.85,41.31,51.57,126.24,90.24,43.99,111.51,119.07,134.73,190.89,118.53,121.47,68.64,97.47,120.69),t20.sum = c(92.61,144.45,109.35,89.37,139.68, 59.13,103.41,109.89,74.25,105.6,127.71,54.81,75.87,132.96,93.12,65.07,147.15,127.17,147.69,212.49,163.35,138.51,89.91,120.15,142.29),t25.sum = c(102.33,162.27) ,127.71,113.13,168.96,76.41,125.55,135.81,74.79,114.72,136.35, 68.31,95.85,139.2,92.64,111.51,185.49,129.87,145.53,220.05,196.83,151.47,136.35,121.23,154.17),t30.sum = c(127.71,177.93,171.45,148.23,195.84,93.69,145.53,166.05 ,86.13,122.88,147.15,91.53,119.07,142.08,92.16,147.69,200.07,134.73,140.67,226.53,219.51,150.93,155.25,124.47,144.99)),. Name = c(“rep”,“Conc”, “性別”,“線”,“小瓶”,“t05.sum”,“t10.sum”,“t15.sum”,“t20.sum”,“t25.sum”,“t30.sum”),行.names = c(NA,25L),class =“data.frame”)

我正在使用你發布的dput輸出作為我的datA。

檢查datA,我們可以看到Line是一個因素:

'data.frame':   25 obs. of  11 variables:
 $ rep    : Factor w/ 3 levels "1","2","3": 1 1 1 1 1 1 1 1 1 1 ...
 $ Conc   : Factor w/ 1 level "a": 1 1 1 1 1 1 1 1 1 1 ...
 $ Sex    : Factor w/ 2 levels "f","m": 1 1 1 1 1 1 1 1 1 1 ...
 $ Line   : Factor w/ 4 levels "20","23","40",..: 1 1 1 1 1 2 2 2 2 2 ...
 [TRUNCATED]

因此,當您嘗試使用“stat_smooth”時,它不知道在嘗試適合平滑時如何處理Line級別。

在繪圖之前,您需要將Line轉換為數字。

您可以通過更改數據框來執行此操作:

datA$Line <- as.numeric(as.character(Line)) # need to convert before to char
# or the numeric values will become the internal factor numbers and not the labels

然后你就像你做的那樣:

c <- qplot(Line, t05.sum, data= datA, facets=Sex~rep)
c + stat_smooth(method=lm, fullrange = TRUE) + geom_point()

你也可以在qplot調用上進行轉換,如下所示:

c <- qplot(as.numeric(as.character(Line)), t05.sum, 
        data= datA, facets=Sex~rep)

缺少數據,我剛創建了一個玩具數據框。 我想這就是你需要的:

set.seed(1)
df <- data.frame(Line = sample(c(20, 23, 40, 73), 100, TRUE), 
                 t = runif(100, 0, 200), 
                 Sex = sample(c("F", "M"), 100, TRUE), 
                 rep = sample(c("1", "2", "3"), 100, TRUE))

然后繪圖:

library(ggplot2)

ggplot(df, aes(x= Line, y = t)) + 
  geom_point() + 
  facet_grid(Sex~rep) + 
  stat_smooth()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM