R ggplot2突出显示字母串
不确定是否可以使用ggplot2,这是我目前所拥有的 我有两条线R ggplot2突出显示字母串,r,string,ggplot2,plot,R,String,Ggplot2,Plot,不确定是否可以使用ggplot2,这是我目前所拥有的 我有两条线 main="TTTTTTTTGGCTCTTTTCCTCCTAAGAGC" search="CTCTTTTCCTC" 我要做的第一件事是使用 library(stringr) # this is later used to add x min and xmax str_locate_all(pattern ='CTCTTTTCCTC', "TTTTTTTTGGCTCTTTTCCTC
main="TTTTTTTTGGCTCTTTTCCTCCTAAGAGC"
search="CTCTTTTCCTC"
我要做的第一件事是使用
library(stringr)
# this is later used to add x min and xmax
str_locate_all(pattern ='CTCTTTTCCTC', "TTTTTTTTGGCTCTTTTCCTCCTAAGAGC")
# code
ref <- unlist(stringr::str_split("TTTTTTTTGGCTCTTTTCCTCCTAAGAGC", ""))
whole.df <- data.frame(nts = c(ref),
poS = seq(1,29),
set = c("REF"))
ggplot(whole.df, aes_string(x = 'poS', y = 'set', col = 'nts',label = 'nts')) +
geom_text(size = 4, family = "Courier") +
geom_rect(xmin = 11 - 0.5,xmax = 21 + 0.5, ymin = 0.8, ymax = 1.2,
fill = NA, col ="black")
库(stringr)
#这稍后用于添加x min和x max
str_locate_all(pattern='ctcttttctcc',“ttttttttggcttttccttccttaagag”)
#代码
ref如果我们看一下str\u locate的结果,我认为您的代码中有一个bug:
str_locate_all(pattern = t$pattern, t$main)
如果我们看第二个end
值,它是21,而在t
data.frame中,它报告为23
您可以使用以下方法修复此问题:
t$start <- sapply(str_locate_all(pattern = t$pattern, t$main), `[`, j = 1)
t$end <- sapply(str_locate_all(pattern = t$pattern, t$main), `[`, j = 2)
t$start这太完美了,我不知道你可以使用tileIt,它非常类似于geom_rect
,但是使用x/y/width/height参数化,而不是xmin/xmax/ymin/ymax
[[1]]
start end
[1,] 11 23
[[2]]
start end
[1,] 11 21
t$start <- sapply(str_locate_all(pattern = t$pattern, t$main), `[`, j = 1)
t$end <- sapply(str_locate_all(pattern = t$pattern, t$main), `[`, j = 2)
# setting up the letter data
strings <- strsplit(t$main, "")
df <- data.frame(locus = rep(t$locus, lengths(strings)),
letters = unlist(strings),
pos = unlist(lapply(strings, seq_along)))
ggplot(df, aes(x = pos, y = locus, label = letters)) +
geom_tile(data = t, aes(x = (start + end)/2, width = end - start + 1, y = locus),
inherit.aes = FALSE, fill = NA, colour = "black", alpha = 0.5) +
geom_text(aes(colour = letters), family = "mono")