2017-01-08 59 views
0

如何在陰謀中顯示黃土平滑趨勢線?請幫助處理警告消息:「刪除了包含非有限值(stat_smooth)的19行」。在線圖中顯示黃土平滑趨勢線,#ggplot2。

我的數據:

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=Base plot with trendline

規模PL OT這是未能得到摻入到鹼情節= P4

Scale plot that was failed to get incorporated to base plot=p4

+2

您_do_認識到,我們不能引用的HTML文件在硬盤上,不是嗎? – G5W

+3

這是正確的,你只是沒有在你選擇的y範圍內的任何數據。這也是一個警告,只是告訴你一些數據點不能被繪製出來 - 並非錯誤 – rawr

+3

嚴重的是你最近有什麼問題,op已經提供了數據,代碼,一個可重現的例子,圖像,描述了所需的輸出。 。OP還能做些什麼來取悅你? – rawr

回答

1

在函數調用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") 
+0

我可以看到我搞砸了。謝謝。 – Maggie