Первые несколько строк моего входного CSV-файла ("genus_counts.csv") выглядят следующим образом:
Sample,Woeseia,Candidatus_Nitrosopumilus,Nitrospira,Nitrospina,Pseudahrensia,AqS1,Salinicola,Pir4_lineage,Subgroup_10,BD1-7_clade,Sva0996_marine_group,Anoxybacillus,Others,Unclassified
BW1,1.73959,0.474433,0,1.15973,0,0,3.32103,0,0,0,0,8.69794,27.464423,57.1429
BW2,0.424628,0.679406,0,0,0,0,9.95754,0,0.191083,0,1.18896,0,35.7749522,51.7834
и я намерен сделать гистограмму с накоплением на основе этого. Я попробовал приведенный ниже код R, но имена в легенде все еще имеют подчеркивание. Я ввел строку pcm %>% rename_all(~gsub("_", " ", .))
, чтобы заменить все символы подчеркивания пробелами, но в легенде ничего не изменилось (подчеркивания остаются на графике!). Любая помощь здесь будет оценена по достоинству.
library(ggplot2)
library(reshape2)
pc = read.csv("genus_counts.csv", header = TRUE)
pcm = melt(pc, id = c("Sample"))
pcm$Sample <- factor(pcm$Sample,levels=unique(pcm$Sample))
pcm %>% rename_all(~gsub("_", " ", .))
mx = ggplot(pcm, aes(x = Sample, fill = variable, y = value)) +
geom_bar(stat = "identity", colour = "black") +
theme(axis.text.x = element_text(angle = 90, size = 14, colour = "black", vjust = 0.5, hjust = 1, face= "bold"),
axis.title.y = element_text(size = 16, face = "bold"), legend.title = element_text(size = 16, face = "bold"),
legend.text = element_text(size = 12, face = "bold", colour = "black"),
axis.text.y = element_text(colour = "black", size = 12, face = "bold")) +
scale_y_continuous(expand = c(0,0)) +
labs(x = "", y = "Relative Abundance (%)", fill = "Taxon") +
scale_fill_viridis_d(option = "plasma")
mx
rename_all
используется для изменения имен столбцов функции. После того, как вы melt
фрейм данных, переменные больше не являются именами столбцов, а являются значениями variable
столбца.
Таким образом, либо вы можете использовать rename_all
до шага melt
, либо вы можете заменить значения в операторе mutate
после плавления фрейма данных.
library(dplyr)
library(ggplot2)
pcm %>%
mutate(variable = gsub("_", " ", variable)) %>%
ggplot(aes(x = Sample, fill = variable, y = value)) +
geom_bar(stat = "identity", colour = "black") +
theme(axis.text.x = element_text(angle = 90, size = 14,
colour = "black", vjust = 0.5, hjust = 1, face= "bold"),
axis.title.y = element_text(size = 16, face = "bold"),
legend.title = element_text(size = 16, face = "bold"),
legend.text = element_text(size = 12, face = "bold", colour = "black"),
axis.text.y = element_text(colour = "black", size = 12, face = "bold")) +
scale_y_continuous(expand = c(0,0)) +
labs(x = "", y = "Relative Abundance (%)", fill = "Taxon") +
scale_fill_viridis_d(option = "plasma")
Вам нужно назначить вывод обратно на pc
после замены значений. pc <- pc %>% rename_all(~gsub("_", " ", .))
@RodriguezJMathew
Второй вариант для достижения желаемого результата — передать функцию в аргумент labels
шкалы, которая заменяет символы подчеркивания пробелом, то есть labels = ~ gsub("_", " ", .x)
:
library(ggplot2)
library(reshape2)
pcm <- melt(pc, id = c("Sample"))
pcm$Sample <- factor(pcm$Sample, levels = unique(pcm$Sample))
ggplot(pcm, aes(x = Sample, fill = variable, y = value)) +
geom_bar(stat = "identity", colour = "black") +
theme(
axis.text.x = element_text(angle = 90, size = 14, colour = "black", vjust = 0.5, hjust = 1, face = "bold"),
axis.title.y = element_text(size = 16, face = "bold"), legend.title = element_text(size = 16, face = "bold"),
legend.text = element_text(size = 12, face = "bold", colour = "black"),
axis.text.y = element_text(colour = "black", size = 12, face = "bold")
) +
scale_y_continuous(expand = c(0, 0)) +
labs(x = "", y = "Relative Abundance (%)", fill = "Taxon") +
scale_fill_viridis_d(option = "plasma", labels = ~ gsub("_", " ", .x))
ДАННЫЕ
pc <- structure(list(
Sample = c("BW1", "BW2"), Woeseia = c(
1.73959,
0.424628
), Candidatus_Nitrosopumilus = c(0.474433, 0.679406),
Nitrospira = c(0L, 0L), Nitrospina = c(1.15973, 0), Pseudahrensia = c(
0L,
0L
), AqS1 = c(0L, 0L), Salinicola = c(3.32103, 9.95754),
Pir4_lineage = c(0L, 0L), Subgroup_10 = c(0, 0.191083), BD1.7_clade = c(
0L,
0L
), Sva0996_marine_group = c(0, 1.18896), Anoxybacillus = c(
8.69794,
0
), Others = c(27.464423, 35.7749522), Unclassified = c(
57.1429,
51.7834
)
), class = "data.frame", row.names = c(NA, -2L))
Большое спасибо за ваш ответ @ Ронак Шах; Я заинтересован в применении «rename_all» перед шагом «плавить», и я сделал следующее, но ничего не изменилось в выводе (подчеркивания все еще сохраняются). Не знаю, делаю ли я что-то глупое здесь - 'pc = read.csv("transp_Summed_mod_Test_genus_counts.csv", header = TRUE) pc %>% rename_all(~gsub("_", " ", .)) pcm = Melt(pc, id = c("Sample")) pcm$Sample <- factor(pcm$Sample,levels=unique(pcm$Sample)) mx = ggplot(pcm, aes(x = Sample, fill = variable, у = значение)) + .....'