我有一個GRanges物件:
library(GenomicRanges)
gr <- new("GRanges",
seqnames = new("Rle",
values = structure(1L, .Label = "chr8", class = "factor"),
lengths = 8L, elementMetadata = NULL, metadata = list()
),
ranges = new("IRanges",
start = c(
1L, 1L, 3L, 2L, 51L, 51L,
55L, 42L
), width = c(50L, 36L, 27L, 24L, 28L, 25L, 24L, 19L), NAMES = NULL, elementType = "ANY", elementMetadata = NULL,
metadata = list()
), strand = new("Rle",
values = structure(3L, .Label = c(
" ",
"-", "*"
), class = "factor"), lengths = 8L, elementMetadata = NULL,
metadata = list()
), seqinfo = new("Seqinfo",
seqnames = "chr8",
seqlengths = NA_integer_, is_circular = NA, genome = NA_character_
),
elementMetadata = new("DataFrame",
rownames = NULL, nrows = 8L,
listData = list(abundance = c(
101, 9982, 59, 310, 109,
478, 89, 403
), seq = c(
"GCCCGGCGTCCGTGGCCTTTGATCAAGGGCTTCCCTTTGCGAAAGCGCAT",
"TTGAGTTTACAGACTTTCTGCAATTTGGACGCCTGT",
"TCTAGTGCGAATATGGCTGGCCGTGAT",
"GTAAGCTGGCGGCCAGAATCCGGG",
"CGGCGCGGCAAGAACAACACGCGGTTCG",
"CCTGCCATCTGGCGAGTTCGGGACA",
"ACTTCGTGTGCGTTGGTTACTGAT",
"GCAAACGATGGATACAAGC"
)),
elementType = "ANY", elementMetadata = NULL,
metadata = list()
), elementType = "ANY", metadata = list()
)
它看起來像:
GRanges object with 8 ranges and 2 metadata columns:
seqnames ranges strand | abundance seq
<Rle> <IRanges> <Rle> | <numeric> <character>
[1] chr8 1-50 * | 101 GCCCGGCGTCCGTGGCCTTT..
[2] chr8 1-36 * | 9982 TTGAGTTTACAGACTTTCTG..
[3] chr8 3-29 * | 59 TCTAGTGCGAATATGGCTGG..
[4] chr8 2-25 * | 310 GTAAGCTGGCGGCCAGAATC..
[5] chr8 51-78 * | 109 CGGCGCGGCAAGAACAACAC..
[6] chr8 51-75 * | 478 CCTGCCATCTGGCGAGTTCG..
[7] chr8 55-78 * | 89 ACTTCGTGTGCGTTGGTTAC..
[8] chr8 42-60 * | 403 GCAAACGATGGATACAAGC
-------
seqinfo: 1 sequence from an unspecified genome; no seqlengths
我可以制作的情節
library(ggbio)
autoplot(gr, aes(fill = abundance))

題
如何顯示核苷酸序列而不是矩形,每個核苷酸的顏色不同?
uj5u.com熱心網友回復:
我個人覺得 ggbio 繪制起來很麻煩,所以我的建議是將 basepair-wise 觀察轉換為資料框,然后繪制它。
library(GenomicRanges)
library(ggplot2)
# gr <- new("GRanges", ...) # omitted for brevity
# Make row for every letter
df <- mapply(function(s, e, seq, i) {
data.frame(
pos = seq(s, e, by = 1L),
seq = seq,
id = i
)
}, s = start(gr), e = end(gr), seq = strsplit(gr$seq, ""), i = seq_along(gr),
SIMPLIFY = FALSE)
# Combine different granges
df <- do.call(rbind, df)
# Determine y-position in plot
offset <- disjointBins(gr)
df$offset <- offset[df$id]
# Plot
ggplot(df, aes(pos, offset, fill = seq))
geom_tile(height = 0.8)

由reprex 包( v2.0.0 )于 2021 年 10 月 11 日創建
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/315841.html
上一篇:如何讓折線圖“跳過”資料點
