Удаление линий из barplot в R

Я создал барплот для метагеномных данных, используя RStudio

plot_bar(mp3, "Sampletype", fill = "Family", title = title)

Но я получаю строки внутри бара. Мне нужны чистые бары без каких-либо линий. Как это сделать?

Нажмите на ссылку для сюжета ниже

библиотека ("phyloseq"); packageVersion("phyloseq")

библиотека ("biomformat"); packageVersion("biomformat")

библиотека ("ggplot2"); packageVersion("ggplot2")

библиотека ("phyloseq"); packageVersion("phyloseq")

библиотека ("biomformat"); packageVersion("biomformat")

библиотека ("ggplot2"); packageVersion("ggplot2")

biom1 = biomformat:: read_biom (biom_file = "otu_table.json.biom")

mp0 = import_biom (biom1, parseFunction = parse_taxonomy_greengenes)

tax_table (mp0) <- tax_table (mp0) [, 1: 7]

treeFile1 = "rep_set.tre"

tree1 = read_tree (treeFile1)

Дерево1

класс (Дерево1)

mp2 = merge_phyloseq (mp1, tree1) mp2 repseqFile = "seqs_rep_set.fasta"

bs1 = Biostrings:: readDNAStringSet (repseqFile) names (bs1) <- gsub ("\ s. + $", "", names (bs1))

сумма (names(bs1) % в% taxa_names (mp2)) mp3 = merge_phyloseq (mp2, bs1)

plot_bar (mp3, "Sampletype", fill = "Family", title = title)

1 ответ

Решение

plot_bar от phyloseq пакет использует ggplot для построения. Вы можете посмотреть на код для plot_bar набрав plot_bar в консоли, которая дает:

function (physeq, x = "Sample", y = "Abundance", fill = NULL, title = NULL, 
          facet_grid = NULL) {
    mdf = psmelt(physeq)
    p = ggplot(mdf, aes_string(x = x, y = y, fill = fill))
    p = p + geom_bar(stat = "identity", position = "stack", color = "black")
    p = p + theme(axis.text.x = element_text(angle = -90, hjust = 0))
    if (!is.null(facet_grid)) {
        p <- p + facet_grid(facet_grid)
    }
    if (!is.null(title)) {
        p <- p + ggtitle(title)
    }
    return(p)
}

Как видите, функция включает в себя следующее утверждение:

geom_bar(stat = "identity", position = "stack", color = "black")

color="black" Аргумент это то, что вызывает черные линии. Это довольно простой линейный график, и вы можете просто создать свою собственную функцию на основе этого кода:

library(phyloseq)

my_plot_bar = function (physeq, x = "Sample", y = "Abundance", fill = NULL, title = NULL, 
                        facet_grid = NULL) {
    mdf = psmelt(physeq)
    p = ggplot(mdf, aes_string(x = x, y = y, fill = fill))
    p = p + geom_bar(stat = "identity", position = "stack")
    p = p + theme(axis.text.x = element_text(angle = -90, hjust = 0))
    if (!is.null(facet_grid)) {
        p <- p + facet_grid(facet_grid)
    }
    if (!is.null(title)) {
        p <- p + ggtitle(title)
    }
    return(p)
}

Обратите внимание, что единственным изменением является то, что я удалил color="black", Теперь вы можете запустить my_plot_bar вместо plot_bar и получить гистограмму без черных линий.

my_plot_bar(mp3, "Sampletype", fill = "Family", title = title)
Другие вопросы по тегам