R語言的ggplot2做平滑的折線圖簡單小例子

2021-02-15 小明的數據分析筆記本

之前的圖文  跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景 畫折線圖的遇到的一個問題是:ggplot2默認的折線圖畫出來基本都是帶尖的,有沒有辦法將折線圖變得平滑一點呢?

在文章的留言區給出了兩種答案一種是增加作圖用到的數據的數量,可以實現折線圖變平滑另外一種是使用ggplot2的擴展包ggalt中的geom_xspline()函數,更貼心的是還給出了參考推文連結 https://mp.weixin.qq.com/s/kGsEAz6icSsEh40uOeHvBA

接下來我們就試試ggalt中的geom_xspline()函數畫折線圖的效果

通常遇到一個新的包直接用必應搜索搜包的名字就可以找到對應的幫助文檔

image.png

打開這個包的github主頁就有對應的幫助文檔

image.png

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.pngimage.png

歡迎大家關注我的公眾號

小明的數據分析筆記本

公眾號二維碼.jpg

相關焦點

  • R語言ggplot2折線圖(line plot)添加置信區間(CI)展示學術論文作者數量的變化趨勢
    非常有意思的數據可視化案例 ,原文提出的問題是 學術論文中的作者數量有逐年增加的趨勢 ;於是利用R語言裡的 rplos
  • R語言可視化——折線圖、平滑曲線及路徑圖
    今天跟大家講關於路徑圖、平滑曲線與折線圖及其美化。
  • R語言——ggplot2的繪圖邏輯
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。幾何對象簡單來說就是採用展示數據的圖形類型。如散點圖、條形圖等,ggplot2包提供了許多的圖形類型供用戶使用。
  • R語言做K均值聚類的一個簡單小例子
    參考連結https://www.guru99.com/r-k-means-clustering.htmlhttps://datascienceplus.com/k-means-clustering-in-r/https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples
  • ggplot2繪圖之四:散點圖、折線圖,點線圖
    第十九節 R語言ggplot2繪圖系列教程之基本認識 bilibili.com/video/BV1UK4y1r7bU第二十節 R語言ggplot2繪圖基本要素之數據、映射與圖層 bilibili.com/video/BV1zp4y1C7wU第二十一節 R語言ggplot2繪圖基本要素之幾何圖形:直方圖、密度圖與(分組)柱狀圖bilibili.com/video/BV1Ei4y187BL
  • ggplot2如何在R語言中繪製表格
    10.10.4 (Yosemite)locale:\[1\] en\_GB.UTF-8/en\_GB.UTF-8/en\_GB.UTF-8/C/en\_GB.UTF-8/en_GB.UTF-8attached base packages:\[1\] stats     graphics  grDevices utils     datasets  methods
  • R語言ggplot2科研數據作圖配色的一些小技巧
    以下是正文內容 大家好,在這裡給大家介紹一下使用ggplot2繪圖調色的幾種小方法。正所謂繪圖十分鐘,調色一小時。圖片的配色直接決定了圖片質量的好壞。下面講一下我平時繪圖用到的調色工具。首先是創建一份數據集data <- data.frame(  name=letters[1:9],  value=sample(seq(10,20),9))data使用ggplot2默認的配色做一個簡單的柱形圖library(ggplot2
  • R語言實戰(19)——使用ggplot2進行高級繪圖
    後臺回復「R語言實戰」即可獲取二維碼加入R語言實戰學習討論群。19.1 ggplot2包介紹ggplot2包是使用R進行數據可視化的重要工具,提供一個全面的、基於語法的、連貫一致的圖形生成系統,允許用戶創建新穎的、有創新性的數據可視化圖形。ggplot2的語法1. 在ggplot2中,圖是採用串聯起來(+)號函數創建的。每個函數修改屬於自己的部分。
  • R語言做t-SNE降維的一個簡單小例子
    之前有人在公眾號留言問過用R語言如何實現t-SNE降維,今天的推文介紹一下R語言實現的代碼,主要內容參考自連結
  • R語言ggplot2做簇狀柱形圖並添加誤差線的一個完整示例
    image.png現在的需要是做如下的圖image.png接下來就介紹如何利用原始數據到最終的圖的ggplot2的代碼首先是將3個子表格的數據整理到一張表格裡 比如這裡我新建了一個子表格sheet4,數據最終的格式如下
  • R語言畫展基礎篇-折線圖
    做折線圖,以觀察兩棵樹的高度變化情況 #做一個基礎版本的折線圖plot(height_1 ~ months, type = "b")lines(height_2 ~ months, type = "b")
  • 用R語言繪製折線圖
    構造數據源: x <- c(1020,1640,2340,5610,7942) y <- c("水產","水果","蔬菜","豬肉","綜合")        用plot()函數來繪製折線圖
  • R科研繪圖01——基礎折線圖
    簡介折線圖通常用來對兩個連續變量之間的相互依存關係進行可視化。x軸可以是連續型變量,也可以是離散型變量。生物學中,通常用來表示不同藥物劑量下實驗對象的變化,或者是基因在不同類型組織或細胞中的表達模式。1.
  • R語言可視化(二):折線圖繪製
    02.折線圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell
  • ggplot2的回歸模型擬合以及回歸曲線作圖方法雜燴
    相對而言,ggplot2是R裡面非常專業的作圖包,其同時涵括了多種類型的回歸模型在內,這使回歸曲線的實現更加輕鬆。您是否經常使用geom_smooth()擬合線性回歸或LOESS平滑?除了這兩種模型外,您是否還了解過ggplot2實現其它回歸類型的方法,或者其它方式的回歸曲線繪製函數呢?下文就列舉一些示例幫助您加深印象吧。儘管如此,並不是所有回歸都可以繪製圖形展示。
  • 【R畫圖】手把手教你使用ggplot2繪製折線圖
    這樣做是因為橫坐標的屬性設置為了因子,即將連續型的年份和離散型的字符轉換為因子,如果不添加『group = 1』這樣的條件,繪圖將會報錯。故務必需要記住這裡的易犯錯誤的點!往折線圖中添加標記(點)當數據點密度比較小或採集分布(間隔)不均勻時,為折線圖做上標記將會產生非常好的效果。處理的方法非常簡單,只需在折線圖的基礎上再加上geom_point()函數即可。
  • Day7:R語言課程 (R語言進行數據可視化)
    程式語言通常有辦法允許多次執行代碼,或者在「循環」中執行。雖然R語言也有「循環」,但有些函數更直接,例如apply()函數map()族和函數族。map()族比apply()更直觀,因此主要學習map()。
  • ggplot2作圖5招:《R入門25個菜譜》中所有圖片的ggplot2版本
    1.19 Creating a Histogramdata(Cars93, package="MASS")par(mfrow=c(1,2))    hist(Cars931.23 Diagnosing a Linear Regressiondata(iris)    m = lm( Sepal.Length ~ Sepal.Width, data=iris)    par(mfrow=c(2,2
  • 零基礎學習R語言數據分析
    第八章的內容其實大多數其他程式語言都會涉及。但是在R裡面,這些顯循環,用的較少。其實主要還是向量化的操作為主,也稱隱循環。第九章的隱循環非常有用,是R最精華的東西,就是學習起來有點困難。其主要內容是 apply族函數,包括lapply, sapply, tapply, apply, mapply等。這本書最優秀的地方在於數據的subset部分,各種方法講的非常詳細,也有很多的例子。
  • 零基礎入門R語言數據分析指南
    後來自己瀏覽了很多R語言書籍,嘗試了一些門檻比較低的書籍。自此,R語言學習才走上正軌。以下涉及內容包括R語言書籍的推薦,以及R語言相關課程的推薦,學完這個教程的內容之後足以應付工作學習中遇到的統計分析的問題了。經典書籍推薦R語言有兩類書籍比較「坑」,一類是Programming類,一般都帶programing字眼,但不絕對。