簡體   English   中英

R ggplot切面包裹

[英]R ggplot Facet Wrap

我想用y軸將這個散點圖換面,例如,如果y軸上升到1000,我想將此圖分成4個,第一個y軸從0-250開始,下一個251-500,下一個501-750和最后一個751-1000。 這種類型的小平面包裝可以嗎?

library(ggplot2)

A
nrow(A)
# 1000
ncol(A)
# 3
head(A)
#   Track Base Location
# 1     1    A        1
# 2     1    C        2
# 3     1    G        3
# 4     1    G        4
# 5     1    A        5
# 6     1    A        6

p <- ggplot(data = A, aes(y=Track, x=Location)) + 
  geom_point(aes(colour=Base),shape=15,size=2)
  print(p)

如您所見,這就是我現在所擁有的,從美學上看並不令人滿意。 如您所見,這就是我現在所擁有的,從美學上看並不令人滿意。

您可以-只需制作一個指標變量即可顯示每個點應屬於哪個構面。

(暫且說一句-您在問題中提出的內容仍然不是可重復的示例-我們追求的是可以復制粘貼到終端中的東西,仍然可以證明您的問題。例如,我向您展示了一個可復制的示例,其中我在A中只有100行,而不是您有1000行,並且我的間隔與您的間隔不同,但是關鍵是您可以將其直接復制粘貼到您的終端,並且您可以輕松地看到它將如何擴展到您的問題)。

例如

# here's a reproducible example, with 100 data points
A <- data.frame(Track=1, Location=1:100, Base=factor(sample(c('A', 'T', 'C', 'G'), 100, replace=T)))

library(ggplot2)

ggplot(transform(A, panel=cut(Location, seq(0, 100, by=25), include.lowest=T)),
       aes(x=Track, y=Location)) + 
  geom_point(aes(colour=Base),shape=15,size=2) +
  facet_wrap( ~ panel, scales='free')

關鍵點:

  • transform(A, panel=...)在您的數據框中添加一個額外的列“ panel”(嘗試自行運行以查看)
  • cut(Location, seq(0, 100, by=25), include.lowest=T)使一個因子指示每個Location的間隔。此處的間隔為[0, 25], (25,50] (50,75] (75,100]include.lowest確保在第一個時間間隔中包含0)。對於您在問題中提到的中斷,您將執行seq(0, 1000, by=250)
  • facet_wrap(~ panel,...)每間隔一個面
  • facet_wrapscales='free'使得它在每個面板中的所有y比例尺可能都不同(跳過它,它們都以相同的比例繪制-只需嘗試跳過它,您就會明白我的意思了)。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM