Как я могу заставить ggplot2 отображать счетчики на моем перевернутом графике?

У меня есть следующий пример набора данных:

row gene    Type    PercID  Count
1   AAC     MS  0   0
71  AAC     NDA 99.66   17
2   ABC superfamily ATP binding cassette transporter    MS  0   0
72  ABC superfamily ATP binding cassette transporter    NDA 98.5    7
3   acetyltransferase   MS  0   0
73  acetyltransferase   NDA 100 12
4   AcrA    MS  94.6    6
74  AcrA    NDA 0   0
5   AcrB    MS  96  11
75  AcrB    NDA 0   0

Я добавил столбец строк, чтобы сделать уникальные строки в ответ на полученную ошибку о том, что имена строк должны быть уникальными. Я преобразовал нули в NA, чтобы моя цветовая шкала отображала только допустимые значения (в данном случае 90-100).

Я использую этот код для создания сюжета:

library(ggplot2)
library(viridis)

mydata = read.csv("Mydata.csv", quote = "", fileEncoding = "UTF-8-BOM")

mydata2 = mydata
mydata2[, 4:5][mydata2[, 4:5] == 0] <- NA

ggplot(mydata2, aes(x = gene, y = Count, fill = PercID))+
geom_bar(position = position_fill(reverse = TRUE), stat = 'identity')+
facet_wrap(~ Type)+
coord_flip()+
scale_x_discrete(limits = rev(levels(mydata2$gene)))+
scale_fill_viridis(discrete = FALSE, name = "Percent Identity", option = 'plasma')+
theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank())

Это создает график со всеми полосами одинаковой длины: введите здесь описание изображения

Я хочу, чтобы мои столбцы отражали фактические значения из столбца Count в моих данных, чтобы они имели переменную длину.

Я попытался удалить stat = 'identity', однако это дает мне это сообщение об ошибке Error: stat_count() can only have an x or y aesthetic.. Я также пытался удалить y = Count, но затем получаю сообщение об ошибке, что мне нужна эстетика y.

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


person aminards    schedule 03.06.2020    source источник


Ответы (1)


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

Так что, может быть, так:

ggplot(mydata2, aes(x = gene, y = Count, fill = PercID))+
geom_bar(stat = 'identity')+
facet_wrap(~ Type)+
coord_flip()+
scale_x_discrete(limits = rev(levels(mydata2$gene)))+
scale_fill_viridis(discrete = FALSE, name = "Percent Identity", option = 'plasma')+
theme(axis.title.x=element_blank(),
        axis.text.x=element_blank(),
        axis.ticks.x=element_blank())

введите здесь описание изображения

person StupidWolf    schedule 03.06.2020
comment
Спасибо @StupidWolf. Думаю, это было так же просто, как удалить position = position_fill(reverse = TRUE) из моего кода! - person aminards; 03.06.2020
comment
пожалуйста :) рад, что вы можете продолжить анализ удивительных генов - person StupidWolf; 03.06.2020