Как назначить цвет переменной в R? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть список видов, которые я должен раскрасить, основываясь на группировке таксономии c, и я не уверен, как это сделать.

Вот список:

Homo sapiens - человек Mus musculus - домовая мышь Danio rerio - zebrafi sh Drosophila melanogaster - плодовая муха Xenopus tropicalis - древесная лягушка S. cerevisiae - почкующиеся дрожжи Arabidopsis thaliana Oryza sativa - Рис Populus trichocarpa - Коттонвуд (тополь)

Вот код, который я имею до сих пор:

    install.packages("devtools")
    library(devtools)
    install_github("aloraine/loralib")
    library(loralib)
    genes=getGeneLengthsForPanel()
    medians=getMedianGeneLengthsForPanel(genes)
    sizes=getGenomeSizesForPanel()/10**6
    main="Gene length and genome size"
    xlab="genome sizes (Mb)"
    ylab="log10(median gene length)"
    xlim=c(0,4000)


    plot(medians~sizes,pch=16,xlab=xlab,ylab=ylab,las=1,col="lightblue",main=main,xlim=xlim)
            text(medians~sizes,labels=names(medians),cex=0.9,font=2,pos=4)
            old.par=par(no.readonly=TRUE)
            par(mar=c(5.1,7.5,4.1,2.1))
            boxplot(log10length~species,data=genes,las=1,horizontal=TRUE,xlab=ylab)
            par(old.par)

1 Ответ

0 голосов
/ 25 февраля 2020

Чтобы раскрасить поле, вам нужно передать вектор цветов как col. Есть несколько способов продолжить, если вы хотите использовать столбец species, один из способов - использовать уникальные уровни вашего этого столбца (причина species класса factor):

boxplot(log10length~species, data=genes, las=1, horizontal=TRUE, xlab=ylab, col = as.numeric(unique(genes$species)))

Если вы сделаете это, и если вы используете цветовую палитру по умолчанию, вы поймете, что species как 9 уровней, тогда как палитра по умолчанию, состоящая только из 8 цветов и поэтому черного, будет использоваться дважды. Чтобы настроить палитру, вы можете использовать palette() и использовать нужный цветовой вектор: вы можете использовать шестнадцатеричный код для цвета или любое имя цвета, которое вы можете увидеть, используя colors() (см. https://www.datamentor.io/r-programming/color/ Больше подробностей). Например, вы можете использовать следующее.

palette(c("orange", "grey50", "brown2", "#eecd40", "darkgreen", "#26adba", "#4665e7", "#fa7fd0", "#a61932"))
boxplot(log10length~species, data=genes, las=1, horizontal=TRUE, xlab=ylab, col = as.numeric(unique(genes$species)))

Обратите внимание, что порядок цвета будет зависеть от порядка уровней фактора. Кроме того, вы можете напрямую использовать вектор цвета в boxplot

boxplot(log10length~species, data=genes, las=1, horizontal=TRUE, xlab=ylab, col = c("orange", "grey50", "brown2", "#eecd40", "darkgreen", "#26adba", "#4665e7", "#fa7fd0", "#a61932"))

Наконец, есть пакет, который предоставляет цветовую палитру, например RColorBrewer .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...