跟著Nature Methods學畫圖:R語言ggplot2畫小提琴圖

2021-03-06 小明的數據分析筆記本

今天的推文繼續學習A single-cell atlas of the peripheral immune response in patients with severe COVID-19論文中的代碼。今天推文的主要內容是介紹如何使用R語言繪製散點圖並且添加擬合曲線和置信區間

這篇論文是在簡書 土豆學生信 分享的內容看到的。簡書的連結是 https://www.jianshu.com/p/bbf9cb13b41a

論文是

image.png

論文對應的代碼是公開的 https://github.com/ajwilk/2020_Wilk_COVID

image.png

今天重複的內容是論文中的 補充材料Fig9 小提琴圖

image.png

數據格式如下

image.png

需要示例數據可以直接在文末留言

首先是讀入數據
df<-read.csv("Single_Cell/violineplot-1.csv",header=T)
colnames(df)
head(df)

最基本的小提琴圖
library(ggplot2)
#help(package="ggplot2")
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin()

image.png更改主題設置,包括
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line())

image.png將x軸文字標籤更改為垂直
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_text(angle=90,hjust = 1,vjust=0.5))

image.png更改坐標軸的標題,並給整幅圖添加一個標題
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin()+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_text(angle=90,hjust = 1,vjust=0.5),
        plot.title = element_text(hjust=0.5))+
  labs(x=NULL,
       y=NULL,
       title = "Complexity")

image.png填充顏色
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin(aes(fill=cell.type),show.legend = F)+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_text(angle=90,hjust = 1,vjust=0.5),
        plot.title = element_text(hjust=0.5))+
  labs(x=NULL,
       y=NULL,
       title = "Complexity")

image.png疊加散點圖
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin(aes(fill=cell.type),show.legend = F)+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_text(angle=90,hjust = 1,vjust=0.5),
        plot.title = element_text(hjust=0.5))+
  labs(x=NULL,
       y=NULL,
       title = "Complexity")+
  geom_jitter(size=0.5)

image.png

這樣的話論文中的圖就復現出來了。上圖疊加的散點圖是矩形的,最近看到一個函數geom_sina()可以讓散點圖也以小提琴的形狀顯示,我們試一下用這個函數的效果,這個函數來自ggforce這個包,使用前需要先加載

library(ggforce)
ggplot(df,aes(x=cell.type,y=Complexity))+
  geom_violin(aes(fill=cell.type),show.legend = F)+
  theme(panel.grid = element_blank(),
        panel.background = element_blank(),
        axis.line = element_line(),
        axis.text.x = element_text(angle=90,hjust = 1,vjust=0.5),
        plot.title = element_text(hjust=0.5))+
  labs(x=NULL,
       y=NULL,
       title = "Complexity")+
  geom_sina(size=0.1,alpha=0.2)

image.png

這樣看起來比論文中的圖好像好看一點

歡迎大家關注我的公眾號

小明的數據分析筆記本

公眾號二維碼.jpg

相關焦點

  • 跟著Nature microbiology學畫圖~R語言ggplot2畫柱形圖
    首先是第一個小圖:柱形圖,誤差棒,顯著性P值第一步是模擬數據image.png數據是三列:第一列用來做X,第二列做Y,第三列做誤差條讀入數據df1<-read.csv("Figure3_d.csv",header=T)ggplot2
  • 推薦一份ggplot2畫圖的學習資料
    今天查資料的時候發現的,好多漂亮的圖片,大部分都是藉助ggplot2實現的。提供示例數據和代碼。很好的R語言畫圖學習資料。
  • R語言的ggplot2做平滑的折線圖簡單小例子
    之前的圖文  跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景 畫折線圖的遇到的一個問題是:ggplot2默認的折線圖畫出來基本都是帶尖的,有沒有辦法將折線圖變得平滑一點呢?
  • 跟著Nature Methods學畫圖:R語言ggplot2散點圖並添加擬合曲線和置信區間
    今天推文的主要內容是介紹如何使用R語言繪製散點圖並且添加擬合曲線和置信區間這篇論文是在簡書 土豆學生信 分享的內容看到的。image.png今天重複的內容是論文中的 補充材料Fig4中的小a中的第三個小圖
  • 跟著Nature Genetics學畫圖:R語言ggplot2畫折線圖並添加誤差線
    折線圖添加誤差線是非常常用的一種可視化方法,今天的推文介紹一下使用R語言的ggplot2作圖的代碼。
  • 如何通過Google來使用ggplot2可視化
    畫圖,畫各種各樣的圖,畫各種各樣高逼格的圖,畫各種各樣高逼格可以出版的圖,是R語言自帶的另一個光芒屬性。如果你正在為如何畫出各種好看的可視化圖而苦惱,難道你不應該學習一點R語言麼?我就明白我已經學會ggplot2的可視化了,雖然那時候的我畫一個完整完美的圖仍舊是各種磕磕碰碰,但並不影響我已經掌握了它的精髓。兩年多過去了,本身工作中需要我親自來畫圖的機會非常少,所以我的可視化能力毫無進展,甚至有小幅度後退。
  • R語言實戰(19)——使用ggplot2進行高級繪圖
    後臺回復「R語言實戰」即可獲取二維碼加入R語言實戰學習討論群。19.1 ggplot2包介紹ggplot2包是使用R進行數據可視化的重要工具,提供一個全面的、基於語法的、連貫一致的圖形生成系統,允許用戶創建新穎的、有創新性的數據可視化圖形。ggplot2的語法1. 在ggplot2中,圖是採用串聯起來(+)號函數創建的。每個函數修改屬於自己的部分。
  • R語言——ggplot2的繪圖邏輯
    在R語言裡,談及繪圖,ggplot2是最出名的繪圖包之一,作為一個繪圖神器,它提供了許許多多的功能給用戶使用,僅用短短幾行代碼,一幅幅高端大氣的圖像便躍然紙上,這可能就是ggplot2包的魅力所在。語句可以理解成一條語句一幅畫,然後通過圖層疊加,疊加通過「+」號將繪圖的語句連接起來。
  • 跟著Nature Genetics學畫圖~ggplot2畫堆積柱形圖
    今天的筆記記錄的是論文中Figure2圖d中的堆積柱形圖的畫法,(本來今天的推文也計劃將右側的散點圖拼接到堆積柱形圖的右側的內容也記一下的,但是實現的時候遇到一些問題,暫時還沒有重複出來,等到有辦法了再來記錄)
  • 跟著Nature microbiology學畫圖~R語言ggtree展示進化樹
    期刊是 Nature microbiologyimage.png今天重複的圖片是Figure1中的聚類樹圖為了模仿這個圖,下面的輸入數據我直接使用進化樹文件了,因為構建進化樹的時候能夠很方便的獲得節點的支持率信息。首先準備構建進化樹需要用到的fasta格式序列文件這裡用到的數據集來自 網址 https://www.kuleuven.be/aidslab/phylogenybook/Data_sets.html
  • ggplot2畫散點圖拼接密度圖
    image.png前幾天有一個讀者在公眾號留言問上面這幅圖應該如何實現,我想到一個辦法是利用ggplot2分別畫散點圖和密度圖,然後利用aplot包來拼圖,aplot包是ggtree的作者新開發的一個包,非常重要的一個作用就是解決拼圖的時候坐標軸對齊的問題。
  • R語言 ggplot2 繪圖入門,看完你就理解ggplot2的繪圖邏輯了
    R語言最擅長繪圖。R語言最擅長的繪圖包是ggplot2,由於很多朋友沒有接觸過ggplot2,必須要對其語言方式有個初步的認識。
  • R語言可視化學習筆記之ggridges包繪製山巒圖
    作者:嚴濤 浙江大學作物遺傳育種在讀研究生(生物信息學方向)偽碼農,R語言愛好者,愛開源。
  • [R語言] R語言給PCA加個圈圈
    小夥伴們,在遇到組學實驗數據分析得時候,是少不了繪製PCA圖的,但是除了常規的PCA圖以外,往往也會需要在我們的流程結果的PCA上展現組內樣品的分布範圍:像這樣的 這樣的 另外我們公司R語言培訓中也有PCA的圖形繪製。但是如果老師想自己動手,豐衣足食呢,別急,我們有簡化版的PCA繪製教程。用R語言繪製完成後,再用PS和AI適當修改一下就可以大功告成了。PCA降維分析,不僅可以展現我們的樣品重複性,還可以用來發現內在的生物學規律。所以這次我們就圍繞這兩個主題開展今天帖子的內容。
  • 跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景
    今天的筆記記錄的是論文中Figure2圖a的畫法,圖a展示的是啥內容我暫時還沒有看懂,如果從畫圖的角度來說就是一個簡單的折線圖,正好之前有人問到如何添加灰色背景。今天先記錄一下畫圖的內容image.png第一步模擬數據從上至下的第一個a<-seq(0,1.5,0.05)df1<-data.frame(x=1:60,y=sample(a,60,replace=T))畫圖
  • 一文讀懂ggplot2數據可視化
    ggplot2的命令是一種用R實現的繪圖語言ggplot2的代碼相對容易理解,設定各種參數較為方便,圖形也十分美觀,能用相對簡單的代碼在圖形中呈現出非常豐富的信息。不過,ggplot2的語法與傳統R函數的調用方式有很大差別,所以不少人反映學起來有些困難。在ggplot2出現以前,R繪圖都是調用函數,再通過改變函數的參數實現的。
  • 小提琴圖
    小提琴圖 (ViolinPlot) 用於顯示數據分布及其概率密度。這種圖表結合了箱形圖和密度圖的特徵,主要用來顯示數據的分布形狀。中間的黑色粗條表示四分位數範圍,從其延伸的幼細黑線代表 95% 置信區間,而白點則為中位數。
  • ggplot2簡易教程
    概述:ggplot2是R語言流行好用的畫圖包,功能強大,靈活性好。
  • Python語言plotnine VS R語言ggplot2
    ggplot2與plotnine數據可視化初探在R語言中的ggplot2包數據可視化流程程序如下:## 統一設置ggplot2默認的繪圖風格libraryR語言ggplot2數據可視化圖像1針對上面的圖像,在Python中可使用下面的程序進行數據可視化:## 顯示高清圖%config InlineBackend.figure_format = 'retina'## 導入相關庫和模塊import pandas as pdimport numpy as npfrom plotnine import
  • 乾貨 | 繪圖的基本元素(ggplot2實現)
    Python雖然現在很受歡迎,但是我認為在畫圖方面還是不如R(如果有python高手歡迎在留言區拍磚)。R在科研界用的比較多,作為科研民工就先遵循傳統。用R進行數據可視化可以有多種選擇,你可以用R的基礎繪圖系統,也可以使用其他的包,例如ggplot2、Lattice等等。作為一個懶人,最開始使用基礎的R繪圖系統時感覺非常蹩腳,後來開始嘗試ggplot2便一直用到現在。