之前的圖文 跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景 畫折線圖的遇到的一個問題是:ggplot2默認的折線圖畫出來基本都是帶尖的,有沒有辦法將折線圖變得平滑一點呢?
在文章的留言區給出了兩種答案一種是增加作圖用到的數據的數量,可以實現折線圖變平滑另外一種是使用ggplot2的擴展包ggalt中的geom_xspline()函數,更貼心的是還給出了參考推文連結 https://mp.weixin.qq.com/s/kGsEAz6icSsEh40uOeHvBA接下來我們就試試ggalt中的geom_xspline()函數畫折線圖的效果
通常遇到一個新的包直接用必應搜索搜包的名字就可以找到對應的幫助文檔
image.png打開這個包的github主頁就有對應的幫助文檔
ggalt: Extra Coordinate Systems,Geoms, Statistical Transformations, Scales & Fonts for ggplot2 (這句話是啥意思?用我蹩腳的英語翻譯過來:給ggplot2準備的額外的坐標系統,圖層,統計變化,字體等)這個包具體都有啥功能今天就不研究了,主要記錄一下如何實現平滑的折線圖
首先是安裝直接install.packages()就可以了
install.packages("ggalt")image.png一個簡單的小例子構造一份數據
df<-data.frame(x=1:10,
y=sample(1:20,10))
ggplot2折線圖library(ggplot2)
ggplot(df,aes(x=x,y=y))+
geom_line()+
geom_point(size=3)+
theme_bw()image.pngggalt折線圖
ggplot(df,aes(x=x,y=y))+
geom_xspline()+
geom_point(size=3)+
theme_bw()image.png
這個看起來就比geom_line()函數平滑了一些
geom_spline()函數裡有一個參數spline_shape,我們分別給這個參數賦予不同的值來看看他起到什麼效果
p1<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = -2)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = -2")+
labs(x=NULL,y=NULL)
p2<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = -1)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = -1")+
labs(x=NULL,y=NULL)
p3<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = -0.5)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = -0.5")+
labs(x=NULL,y=NULL)
p4<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = 0)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = 0")+
labs(x=NULL,y=NULL)
p5<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = 1)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = 1")+
labs(x=NULL,y=NULL)
p6<-ggplot(df,aes(x=x,y=y))+
geom_xspline(spline_shape = 2)+
geom_point(size=3)+
theme_bw()+
ggtitle("spline_shape = 2")+
labs(x=NULL,y=NULL)
cowplot::plot_grid(p1,p2,p3,p4,p5,p6,ncol = 3,nrow=2)image.png
如果將spline_shape參數設置為0,效果和geom_line()函數是一樣的,如果大於0,不會將所有的點連接起來,小於0就是帶有平滑效果的曲線。但是這個值也不能太大或者太小,絕對值大於2,有的地方會變粗,這個是什麼原理我也不太清楚。
好了,今天的內容就到這裡,非常感謝以下兩位讀者的留言,後面還會有送書活動,到時候會有限送出R語言或者python學習的圖書一本。
image.png
image.png
歡迎大家關注我的公眾號
小明的數據分析筆記本
公眾號二維碼.jpg