重新排列与输入相同的组图

时间:2019-10-01 10:22:29

标签: r

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

> 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 :(得分:0)

我想这就是你要的

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之前添加此行。