Переупорядочить диаграмму группы так же, как ввод - PullRequest
1 голос
/ 01 октября 2019

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

> data <- read.table(
+ text = "Superfamily Drom Bactria Feru Paos
+ ERV 294  224  206  202
+ ERVL-MaLR 103 108 184 231
+ Gypsy 274 187 413 215
+ Pao 6 2 7 4
+ DIRS/Ngaro 15 14 45 25
+ Unknown 26 23 23 37
+ Undefined 76 77 80 95",
+ header = TRUE
+ )
> data
  Superfamily          Drom        Bactria  Feru    Paos
1         ERV           294          224     206     202
2   ERVL-MaLR           103          108     184     231
3       Gypsy           274          187     413     215
4         Pao             6            2       7       4
5  DIRS/Ngaro            15           14      45      25
6     Unknown            26           23      23      37
7   Undefined            76           77      80      95
> data_long <- gather(data,
+ key = "Species",
+ value = "Distrubution",
+ -Superfamily)


> ggplot(data_long, aes(fill=Superfamily, y=Distrubution, x=Species)) + geom_bar(position="dodge2", stat="identity")

Я хотел бы построить диаграмму, аналогичную порядку ввода и стилю курсива курсивом к названию вида только ex (Drom Bactria ....)

1 Ответ

0 голосов
/ 01 октября 2019

Я думаю, это то, что вы просите

data_long$Species <- factor(data_long$Species, levels = unique(data_long$Species))

ggplot(data_long, aes(fill=Superfamily, y=Distrubution, x=Species)) + geom_bar(position="dodge2", stat="identity") + theme(axis.text.x = element_text(face = "italic"))

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

- edit -

Чтобы получить суперсемейство в том же порядке, что и для ввода, вам нужно будет создать факторкак мы делали с именем вида.

data_long$Superfamily<- factor(data_long$Superfamily, levels = data$Superfamily)

Отказ от использования пакета readxl для чтения листа Excel в R, это должно сработать для изменения названия вида:

colnames(data)[2:5] <- c("Alpha Drom", "Beta Bactria", "Gamma Feru", "Delta Paos")

Добавьте эту строку перед созданием data_long.

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