首页 > 解决方案 > 由于重新排序,缩放 x 轴不起作用?

问题描述

我正在尝试制作等级丰度曲线。这是头

head(rank)

    species     ab rank
792    PEGR2 462.10  792
1126    COUM 269.70 1126
1314    KRGR 207.04 1314
1439    KRER 177.11 1439
1446    PEBR 176.00 1446
1623  CAMI12 140.71 1623

排名从 792-8538 开始,没有任何离散模式。我只是想在 x 轴上用 abon y 轴绘制排名,但我不能让它不仅显示所有排名,而不是分解它,我不知道是不是因为那里不是 x 轴的模式,也不是因为我必须重新排序。

x轴是数字

这是我的代码

rank.abun <- ggplot(rank ,aes(x = reorder(rank, -ab), y = ab))+
  geom_line(stat = "identity")+
  #scale_x_continuous(breaks=seq(792, 8538, 10))+
  labs(x = "Abundance Rank", y = "Abundance") +
  theme_bw()+
  theme(panel.grid.minor = element_blank(),
        panel.grid.major = element_blank(),
        panel.border = element_blank(),
        axis.line.x = element_blank(),
        axis.line.y = element_blank(),
        axis.text.x = element_text(angle = 90))+

和相应的情节在此处输入图像描述

理想情况下,x 轴不会包含所有标签。

标签: rggplot2scale

解决方案


使用scale_x_discrete()您可以指定要在 x 轴上放置的标签,例如

library(tidyverse)

rank <- tribble(~"species", ~"ab", ~"rank",
"PEGR2", 462.10,  792,
"COUM", 269.70, 1126,
"KRGR", 207.04, 1314,
"KRER", 177.11, 1439,
"PEBR", 176.00, 1446,
"CAMI12", 140.71, 1623)

ggplot(rank, aes(x = reorder(rank, -ab), y = ab)) +
  geom_bar(stat = "identity") +
  labs(x = "Abundance Rank", y = "Abundance") +
  theme_bw() +
  theme(panel.grid.minor = element_blank(),
        panel.grid.major = element_blank(),
        panel.border = element_blank(),
        axis.line.x = element_blank(),
        axis.line.y = element_blank(),
        axis.text.x = element_text(angle = 90)) +
  scale_x_discrete(breaks = c(792, 1623),
                   labels = c(792, 1623))

示例_1.png


推荐阅读