Разделите barplot на «подразделы» с помощью ggplot2 - PullRequest
0 голосов
/ 25 сентября 2019

Я хочу разделить свой барплот на области так, чтобы определенные области оси X лежали в этих областях.Я постараюсь приложить две фотографии.Тот, что с зеленой линией, - это тот, который я хочу воспроизвести (но зеленая линия для меня не важна), а другой - мой сюжет, который у меня сейчас есть.(Я надеюсь, что это правильная доска для этого вопроса, извините, если нет)

t$anticodon <- as.character(t$anticodon)
t$anticodon <- factor(t$anticodon, levels=c("GCA", "GCT", "GCC", "GCG", "AGA", "AGG", "CGA",
                                            "CGT", "CGC", "CGG", "AAT", "AAC", "GAT", "GAC", "TGC", "TGT", "CAA",
                                            "CAG", "GAA", "GAG", "GGA", "GGT", "GGC", "GGG", "CAT", "CAC", "ATA",
                                            "ATT", "ATC", "TTA", "CTA", "CTT", "TTG", "CTC", "CTG", "AAA", "AAG",
                                            "ATG", "TTT", "TTC", "CCA", "CCT", "CCC", "CCG", "AGT", "TCA", "TCT",
                                            "AGC", "TCC", "TCG", "TAA", "TAG", "TGA", "ACA", "ACT", "ACC", "ACG",
                                            "TGG", "TAT", "TAC", "GTA", "GTT", "GTC","GTG", "NNN"))

"t" - это .csv, а "anticodon" - строка, которую я использовал.

Для визуализации графика:

library(ggplot2);
ggplot(t, aes(t$anticodon, t$copy_Ae)) +
  geom_bar(stat = "identity") +
  labs(y = "Frequency", x = "Anti Codons") +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, size = 16)) +
  geom_text(aes(label = t$copy_Ae), hjust = 0.5, vjust = -0.5, size = 6) +
  theme(plot.title = element_text(size = 20, hjust = 0.5)) +
  theme(axis.title = element_text(size = 16))

«copy_Ae» содержит число случаев появления антикодона.Мне удалось создать ту же схему на оси X.

Поэтому я хочу создать область с «Аланином» (и для других), которая будет охватывать диапазон от GCA до GCG на X-ось.

Спасибо. Я хочу воспроизвести нижнюю картинку.Верхняя картинка моя, но без этих «областей»

Редактировать: вывод $ dput (t):

> dput(t)
structure(list(X = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA), anticodon = structure(c(30L, 54L, 
52L, 7L, 55L, 31L, 17L, 44L, 49L, 18L, 56L, 65L, 9L, 4L, 10L, 
21L, 19L, 22L, 58L, 53L, 11L, 59L, 32L, 60L, 57L, 25L, 20L, 26L, 
45L, 12L, 46L, 27L, 24L, 47L, 61L, 33L, 37L, 38L, 28L, 48L, 41L, 
36L, 42L, 63L, 43L, 2L, 40L, 64L, 50L, 3L, 5L, 51L, 13L, 1L, 
16L, 8L, 15L, 39L, 23L, 35L, 14L, 6L, 34L, 62L, 29L), .Label = c("AAA", 
"AAC", "AAG", "AAT", "ACA", "ACC", "ACG", "ACT", "AGA", "AGC", 
"AGG", "AGT", "ATA", "ATC", "ATG", "ATT", "CAA", "CAC", "CAG", 
"CAT", "CCA", "CCC", "CCG", "CCT", "CGA", "CGC", "CGG", "CGT", 
"CTA", "CTC", "CTG", "CTT", "GAA", "GAC", "GAG", "GAT", "GCA", 
"GCC", "GCG", "GCT", "GGA", "GGC", "GGG", "GGT", "GTA", "GTC", 
"GTG", "GTT", "NNN", "TAA", "TAC", "TAG", "TAT", "TCA", "TCC", 
"TCG", "TCT", "TGA", "TGC", "TGG", "TGT", "TTA", "TTC", "TTG", 
"TTT"), class = "factor"), codon = structure(c(20L, 53L, 31L, 
8L, 21L, 18L, 33L, 56L, 65L, 64L, 7L, 36L, 47L, 28L, 2L, 58L, 
35L, 24L, 46L, 27L, 42L, 1L, 37L, 41L, 5L, 50L, 38L, 4L, 60L, 
55L, 14L, 44L, 6L, 26L, 54L, 40L, 15L, 23L, 57L, 12L, 49L, 29L, 
3L, 19L, 43L, 62L, 48L, 17L, 30L, 32L, 16L, 61L, 59L, 39L, 11L, 
45L, 25L, 9L, 10L, 34L, 13L, 22L, 63L, 51L, 52L), .Label = c("GCA", 
"GCT", "GCC", "GCG", "AGA", "AGG", "CGA", "CGT", "CGC", "CGG", 
"AAT", "AAC", "GAT", "GAC", "TGC", "TGT", "CAA", "CAG", "GAA", 
"GAG", "GGA", "GGT", "GGC", "GGG", "CAT", "CAC", "ATA", "ATT", 
"ATC", "TTA", "CTA", "CTT", "TTG", "CTC", "CTG", "AAA", "AAG", 
"ATG", "TTT", "TTC", "CCA", "CCT", "CCC", "CCG", "AGT", "TCA", 
"TCT", "AGC", "TCC", "TCG", "TAA", "TAG", "TGA", "ACA", "ACT", 
"ACC", "ACG", "TGG", "TAT", "TAC", "GTA", "GTT", "GTC", "GTG", 
"NNN"), class = "factor"), copy_Ae = c(5L, 6L, 2L, 6L, 5L, 2L, 
5L, 98L, 5L, 2L, 3L, 12L, 5L, 10L, 6L, 4L, 2L, 1L, 6L, 3L, 2L, 
6L, 5L, 6L, 4L, 2L, 12L, 2L, 32L, 10L, 16L, 1L, 2L, 4L, 6L, 10L, 
4L, 7L, 1L, 11L, 39L, 2L, 2L, 11L, 5L, 9L, 3L, 5L, 4L, 5L, 1L, 
3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), copy_Lf = c(6L, 
3L, 2L, 8L, 14L, 2L, 5L, 9L, 1L, 2L, 3L, 13L, 3L, 9L, 7L, 4L, 
3L, 0L, 6L, 4L, 2L, 6L, 7L, 9L, 5L, 1L, 11L, 2L, 99L, 9L, 14L, 
1L, 2L, 5L, 9L, 13L, 4L, 4L, 1L, 10L, 22L, 0L, 0L, 13L, 0L, 10L, 
4L, 7L, 7L, 7L, 0L, 3L, 3L, 2L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L)), .Names = c("X", "anticodon", "codon", "copy_Ae", 
"copy_Lf"), row.names = c(NA, -65L), class = "data.frame")

1 Ответ

0 голосов
/ 26 сентября 2019

В ваших данных все еще отсутствует группировка для прямоугольников.Поэтому я взял их из вашего примера и рассчитал, но он не выравнивается, я думаю, потому что это другой тип.Надеюсь, что это полезно.

tlabel <- read.table(text="Alanine 4 0
Arginine 6 0
Asparagine 2 90
Aspartate 2 90
Cysteine 2 90
Glutamate 2 90
Glycine 5 0
Histidine 2 90
Isoleucine 3 90
Leucine 6 0
Lysine 2 0
Methoinine 1 90
Phenylalanine 2 90
Proline 3 0
Serine 6 0
STOP 3 0
Threonine 4 0
Tryptophan 1 90
Tyrosine 2 90
Valine 4 0", sep=" ", stringsAsFactor=F)

tlabel$V2[1] <- tlabel$V2[1]+0.5 
tlabel$end <- cumsum(tlabel$V2)
tlabel$start <- tlabel$end - tlabel$V2
tlabel$start[1] <- 0.5


ggplot() +
  geom_bar(data=t, aes(anticodon, copy_Ae),stat = "identity") +
  geom_text(data=t, aes(anticodon, copy_Ae, label = copy_Ae), hjust = 0.5, vjust = -0.5, size = 6) +
  geom_rect(data=tlabel, aes(xmin=start,
                             xmax=end, 
                             ymin=0,ymax=110), fill=NA, color="black")+
  geom_text(data=tlabel, aes((end-start)/2+start, 80, label = V1), 
            size = 2, angle=tlabel$V3) +
  labs(y = "Frequency", x = "Anti Codons") +
  theme(plot.title = element_text(size = 20, hjust = 0.5),
        axis.title = element_text(size = 16),
        axis.text.x = element_text(angle = 90, vjust = 0.5, size = 16))

enter image description here

...