跟著Nature Genetics學畫圖~ggplot2畫折線圖並在指定區域添加灰色背景

2021-02-20 小明的數據分析筆記本
image.png

最近在看論文 Phased diploid genome assemblies and pan-genomes provide insights into the genetic history of apple domestication(高水平論文看起來還真是吃力!)看懂一點記一點吧。今天的筆記記錄的是論文中Figure2圖a的畫法,圖a展示的是啥內容我暫時還沒有看懂,如果從畫圖的角度來說就是一個簡單的折線圖,正好之前有人問到如何添加灰色背景。今天先記錄一下畫圖的內容

image.png第一步模擬數據

從上至下的第一個

a<-seq(0,1.5,0.05)
df1<-data.frame(x=1:60,y=sample(a,60,replace=T))

畫圖

library(ggplot2)
ggplot(df1,aes(x=x,y=y))+
  geom_line(size=1,color="#6994f3")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5))+
  labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label=expression(italic("M. sieversii")))

image.png

第二個和第一個一樣,這裡就不重複了,接下來是第三個,第三個多了一個灰色背景,這個可以藉助geom_rect()函數實現

構造一份數據

b<-seq(0,2.5,0.05)
df3<-data.frame(x=1:60,y=sample(b,60,replace = T))

畫圖

ggplot(df3,aes(x=x,y=y))+
  geom_rect(aes(xmin=5,xmax=12,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.1)+
  geom_rect(aes(xmin=23,xmax=28,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.1)+
  geom_rect(aes(xmin=35,xmax=52,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.1)+
  geom_rect(aes(xmin=55,xmax=59,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.1)+
  geom_line(size=1,color="#6994f3")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5),
        axis.text.x = element_blank())+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label="Gala")

image.png接下來是最後一個,兩條折線畫到一起

這裡採用的辦法是兩份數據集來疊加

ggplot()+
  geom_rect(aes(xmin=5,xmax=12,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=23,xmax=28,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=35,xmax=52,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=55,xmax=59,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.)+
  geom_line(data=df5.1,aes(x=x,y=y),
            size=1,color="#80c97f")+
  geom_line(data=df5.2,aes(x=x,y=y),
            size=1,color="#a68dc8")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5))+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label="Gala Haplome B")

image.png最後一步是將5個圖拼接到一起
p1<-ggplot(df1,aes(x=x,y=y))+
  geom_line(size=1,color="#6994f3")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5))+
  labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label=expression(italic("M. sieversii")))

p2<-ggplot(df1,aes(x=x,y=y))+
  geom_line(size=1,color="#6994f3")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5))+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label=expression(italic("M. sylvestris")))
p3<-ggplot(df3,aes(x=x,y=y))+
  geom_rect(aes(xmin=5,xmax=12,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=23,xmax=28,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=35,xmax=52,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=55,xmax=59,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_line(size=1,color="#6994f3")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5),
        axis.text.x = element_blank())+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label="Gala")


p4<-ggplot()+
  geom_rect(aes(xmin=5,xmax=12,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=23,xmax=28,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=35,xmax=52,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=55,xmax=59,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.)+
  geom_line(data=df5.1,aes(x=x,y=y),
            size=1,color="#80c97f")+
  geom_line(data=df5.2,aes(x=x,y=y),
            size=1,color="#a68dc8")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5),
        axis.text.x = element_blank())+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label="Gala Haplome A")

p5<-ggplot()+
  geom_rect(aes(xmin=5,xmax=12,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=23,xmax=28,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=35,xmax=52,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.3)+
  geom_rect(aes(xmin=55,xmax=59,ymin=-Inf,ymax=Inf),
            fill="grey",alpha=0.)+
  geom_line(data=df5.1,aes(x=x,y=y),
            size=1,color="#80c97f")+
  geom_line(data=df5.2,aes(x=x,y=y),
            size=1,color="#a68dc8")+
  ylim(0,3)+
  theme_bw()+
  theme(panel.grid = element_blank(),
        axis.title = element_blank(),
        plot.title = element_text(hjust=0.5))+
  #labs(title="Chr15")+
  annotate(geom = "text",x=5,y=2.8,
           label="Gala Haplome B")

library(cowplot)
pdf(file = "line_plot.pdf",height = 8,width = 6)
plot_grid(p1,p2,p3,p4,p5,
          ncol = 1,nrow=5)
dev.off()

image.png

這個地方好奇怪,遇到了幾個問題:

        第三個小圖和第四。五個顏色和透明度都是設置一樣的,最後效果看起來    為 啥差別這麼大呢?沒有想明白原因

        使用expression(italic("M. sieversii"))將標籤的字體設置為斜體的時候遇到警告信息

Warning messages:
1: In is.na(x) :
  is.na() applied to non-(list or vector) of type 'expression'

不知道是什麼原因!

論文中的圖折線看起來好像是平滑的,ggplot2畫折線圖的時候有沒有辦法能夠讓線變成平滑的呢?自己也查了資料,暫時也沒有找到辦法?

歡迎大家留言討論以上的三個問題呀!

歡迎大家關注我的公眾號

小明的數據分析筆記本

公眾號二維碼.jpg

相關焦點

  • 跟著Nature Genetics學畫圖:R語言ggplot2畫折線圖並添加誤差線
    折線圖添加誤差線是非常常用的一種可視化方法,今天的推文介紹一下使用R語言的ggplot2作圖的代碼。
  • 跟著Nature Methods學畫圖:R語言ggplot2畫氣泡圖(dotplot)展示基因表達量
    image.png今天重複的內容是論文中的figure2fimage.png今天的推文主要介紹其中的氣泡圖,明天的推文介紹如何向氣泡圖上疊加樹形圖按照論文提供的代碼得到了畫圖用到的數據,部分數據如下image.png但是用他提供的畫圖代碼沒有能夠畫出圖來。因為他用到了一個dot_plot()函數,沒有找到這個函數是怎麼來的。
  • R繪圖之ggplot2-散點圖(一)
    上次我們簡單的介紹了ggplot2的做圖基礎,並介紹了如何調整參數,設置分組並添加線性擬合,那麼今天大家跟著圖圖一起來系統的學習一下散點圖的製作
  • 如何為圖表添加「帥帥」的指引線?
    那麼,常規散點圖能不能畫成這樣效果?如果仍然使用針對單細胞數據高度定製的Seurat,顯然是非常麻煩的。而使用ggplot2繪製類似這樣的多標籤圖表,又容易出現「數據標籤重疊」、超出繪圖區域的標籤「顯示不全「和鄰近數據點」指示不明「三大難題。
  • QQ畫圖紅包魯班七號怎麼畫?畫圖紅包魯班七號簡筆畫畫法[多圖]
    QQ畫圖紅包魯班七號簡筆畫要怎麼才能畫出來?想要快速識別出紅包,那麼就要畫對人物才可以,玩家們一定要畫出指定的圖案,這樣才能識別出紅包,而魯班七號的畫法下面會有詳細的教學。QQ畫圖紅包魯班七號簡筆畫畫法畫法一1.其實想要打開魯班七號
  • R語言繪圖 | R繪製火山圖 EnhancedVolcano+ggplot
    火山圖其實是一種很形象的叫法,它可以通過關注對象的落點從而直觀地展示該對象的所屬區域。其通常用於展示差異結果,比如RNA-seq差異基因展示。讀懂了「火山」火星噴射的落點橫縱坐標意義,就讀懂了火山圖:紅點: p<0.05且log2FC>1的基因; 藍點:p<0.05且log2FC< -1的基因; 灰色點:FC<2,即|log2FC|<1。R繪製火山圖下面就進入主題,用R繪製火山圖,我們的教程小白也能看懂哦😊!
  • 跟著ISME學畫圖:柱狀圖+熱圖組合展示微生物功能
    分析代碼########## heatmap + barplot # heatmaplibrary(car)library(pheatmap)library(ggplot2(c("white", "#DEB887"))(500),         cluster_cols = FALSE,fontface = "bold", display_numbers = T,border="white",number_format="%.0f")# barplotlibrary(randomForest)library(ggplot2
  • ggplot2一頁多圖(組合圖)
    第七十八題 2021年2月6日ggplot2
  • ggplot2如何畫雙層餅圖
    BioNews,專注於報導生命科學領域相關新聞,長按下方二維碼即可關注"BioNews"(id : iBioNews)最近有了新的需求,想要畫雙層餅圖browsers<-structure(list(browser = structure(c(3L, 3L, 3L, 3L, 2L, 2L, 2L, 1L, 5L, 5L
  • 思維導圖簡單畫法?可愛氣泡思維導圖怎麼畫?
    思維導圖在很多公司都很實用,所以學習畫圖的人也很多,但是對於不太會的朋友來說,想要畫一個簡單可愛的思維導圖其實不難,只要大家掌握到方法,今天小編就為大家帶來思維導圖簡單畫法?可愛氣泡思維導圖怎麼畫?讓你輕鬆學會畫可愛的思維導圖。
  • qq畫圖紅包偽裝怎麼畫 qq紅包偽裝簡筆畫圖分享
    QQ畫圖紅包領取的用戶根據主題畫出相應的畫作便可獲得紅包。其中偽裝怎麼畫呢?想知道的小夥伴趕快來和小編一起看一下最簡偽裝畫法吧!  偽裝畫法圖分享:  QQ畫圖紅包玩法介紹  畫圖紅包怎麼開啟  1.點擊 手機QQ 選擇個人或者群  2.點擊 紅包  3.選擇 畫圖紅包  QQ畫圖紅包怎麼獲得
  • 跟著Nature學畫圖~使用R語言的ggtree給進化樹添加圖片注釋
    人類的近親肺魚基因組被解析,點進去看到裡面有一張進化樹的圖image.png正好自己最近在學習R語言的ggtree,之前也在ggtree的幫助文檔看到過類似的圖片,所以決定重複一下這張圖論文是Giant lungfish genome elucidates the conquest of land
  • ggplot2繪製時間序列變化圖
    ggplot2繪製時間序列變化圖疫情時間序列變化涉及主要方法:list.files遍歷文件read_excel讀取EXCEL文件圖例等文字格式、文字大小、位置設置geom_smooth平滑曲線繪製geom_point散點繪製library(lubridate)library(ggplot2
  • 如何用Origin畫能帶圖?
    關於Origin中數據的快速導入,請參見:Origin中數據導入方法(視頻 + 文字)(見能帶數據和垂線數據表格)將整理後的數據複製到origin中畫線(Line+Symbol)如果畫圖很厲害,垂線用畫筆畫上去也行,但是我是一個菜鳥,通過兩點確定一條直線,在ms圖中找到這三條垂線的橫坐標,為了方便看F Q Z的橫坐標,我用PS添加了這三點的坐標。
  • 【完整版】畫圖問題(方格圖+點子圖)
    一、畫圖問題類型1、方格圖中畫平面圖形;
  • QQ畫圖紅包火焰鳥怎麼畫 火焰鳥簡筆畫法圖一覽
    在QQ畫圖紅包中,用戶想要獲得紅包是比較難的事情,不少用戶好奇火焰鳥這個火爆應該怎麼畫,今天就給大家整理了火焰鳥畫法教程,一起來看看火焰鳥是怎麼畫的吧。  QQ畫圖紅包火焰鳥畫法首先畫一個圓作為火焰鳥的頭的主題,然後畫上橢圓作為火焰鳥的身子,最重要的是畫上長長的腿,識別成功即可開紅包。
  • Nature Genetics,棉花發了又發
    :2017.3.6   影響因子:27.958  研究背景:  棉花是世界上重要的經濟作物之一,為紡織品提供天然和再生纖維,同時也是榨油和蛋白的來源。  圖1.  圖2.  本文章亮點在於所選樣品類型豐富,代表性強,且基於棉花樣本的重測序數據將GWAS和棉花馴化的相關研究相結合,在檢測棉花產量和纖維質量性狀相關位點的同時對地方品種和栽培種間的遺傳關係進行研究,為棉花品種的改良及進化分析提供基因組學依據。
  • ggplot2 案例:赫羅圖
    今天的推文是個 ggplot2 案例,不過也是一個動態圖表,在開始敲今天的代碼之前我們先了解一下什麼是「赫羅圖」?赫羅圖(Hertzsprung-Russell diagram,簡寫為 H-R diagram 或 HRD)是丹麥天文學家赫茨普龍及由美國天文學家羅素分別於 1911 年和 1913 年各自獨立提出的。