簡體   English   中英

在折線圖#ggplot2中顯示黃土平滑趨勢線。

[英]Show loess smoothed trend-line in line plot, #ggplot2.

如何在圖中顯示黃土平滑趨勢線? 請幫助處理警告消息:“已刪除19個包含非限定值的行(stat_smooth)”。

我的資料:

yrcnt<-read.table(header = TRUE, text = "year outcome pop rate pred.SC
1  1995    2306  87592001 2.632660 0.9626214
2  1996    2221  87628543 2.534562 0.9599941
3  1997    2202  81872629 2.689544 0.9573667
4  1998    2316  88200076 2.625848 0.9547394
5  1999    2456  96200312 2.553006 0.9521121
6  2000    2526  99565063 2.537035 0.9494848
7  2001    2511  95951330 2.616952 0.9468575
8  2002    2537  96976191 2.616106 0.9442302
9  2003    2618 101673130 2.574918 0.9416028
10 2004    2644 104554479 2.528825 0.9389755
11 2005    2594 100522055 2.580528 0.9363482
12 2006    2620 105787278 2.476668 0.9337209
13 2007    2722 108946407 2.498476 0.9310936
14 2008    2788 112200567 2.484836 0.9284663
15 2009    2706 104491560 2.589683 0.9258389
16 2010    2773 108651896 2.552187 0.9232116
17 2011    2764 109632577 2.521148 0.9205843
18 2012    2694 107594922 2.503836 0.9179570
19 2013    2673 107553219 2.485281 0.9153297")

 http://tutorials.iq.harvard.edu/R/Rgraphics/Rgraphics.html 

我的代碼:

    p1 <- ggplot(yrcnt, aes(y = log(rate), x = year))
    yrcnt$pred.SC <- predict(lm(year ~ log(rate), data = yrcnt))
    p1 + geom_line(aes(color = rate)) +geom_line(aes(y = pred.SC))
    p1 + geom_line(aes(color = rate)) + geom_smooth()
    p4 <- p1 + geom_line(aes(color = rate)) + geom_smooth(color="red")
    p4 + scale_x_continuous(name = "Years",limits = c(1995, 2013),breaks = 1994:2014) +
      scale_y_continuous(name = "Pancreatic Cancer Hospitalization Rate, 1995-2013",limits = c(2.4, 2.7),breaks = seq(2.4, 2.7, by = 0.1)) +
      ggtitle("Long Term Trend in Pancreatic Cancer Hospitalizations")
>`geom_smooth()` using method = 'loess'
p4=Base plot with trendline

p4 =帶有趨勢線的基本圖

無法合並到基本圖= p4的比例圖

無法合並到基本圖= p4的比例圖

scale_y_continuous()的函數調用中,刪除參數

                       limits = c(2.4, 2.7), 
                       breaks = seq(2.4, 2.7, 
                                    by = 0.1)) 

因為y軸的真實極限在0.9到1之間,所以您將它們設置在2.4到2.7之間。 我不知道您是否需要速率或此處的日志(速率)。

一個替代方案是

library('ggplot2')
p1 <- ggplot(yrcnt, aes(y = rate, x = year))

######### lm() args flipped, then 
######### wrapped in exp() function.
yrcnt$pred.SC <- exp(predict(lm( log(rate) ~ year, data = yrcnt))) 

p1 + geom_line(aes(color = rate)) +geom_line(aes(y = pred.SC))

p4 <- p1 + geom_line(aes(color = rate)) + geom_smooth(color="red", method="loess")
p4 + scale_x_continuous(name = "Years",limits = c(1995, 2013),breaks = 1994:2014) +
        scale_y_continuous(name = "Pancreatic Cancer Hospitalization Rate, 1995-2013",limits = c(2.4, 2.7),breaks = seq(2.4, 2.7, by = 0.1)) +
        theme(legend.position ="none") +
        ggtitle("Long Term Trend in Pancreatic Cancer Hospitalizations")

暫無
暫無

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

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