首页 > 解决方案 > 重新排序与输入相同的组图

问题描述

我有一个输入数据,我想创建一个分组图表,但是当我完成创建时,问题是顺序与输入不同,它按字母顺序排列,另外我想将字体样式更改为斜体,仅用于物种名称。

> 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")

我想构建图表与输入顺序相同,斜体字体样式仅用于物种名称前(Drom Bactria ....)

标签: r

解决方案


我想这就是你要的

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 接收到一个因子,它将使用水平顺序作为轴顺序。当涉及到字体时,您可以在主题参数中进行更改。

- 编辑 -

要以与输入相同的顺序获得超家族,您必须像我们对物种名称所做的那样创建一个因子。

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

放弃使用 readxl-package 将 excel 表读入 R,这应该可以更改物种名称:

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

在创建 data_long 之前添加此行。


推荐阅读