程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了由于重新排序,缩放 x 轴不起作用?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决由于重新排序,缩放 x 轴不起作用??

开发过程中遇到由于重新排序,缩放 x 轴不起作用?的问题如何解决?下面主要结合日常开发的经验,给出你关于由于重新排序,缩放 x 轴不起作用?的解决方法建议,希望对你解决由于重新排序,缩放 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 轴上绘制 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 轴不起作用?

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

解决方法

使用 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))

由于重新排序,缩放 x 轴不起作用?

,

问题出在 scale_x_conTinuous 上,reorder 的输出是 factor。下面详细解释

library(dplyr,warn.conflicts = falSE)  
library(ggplot2)

# to understand we need to know what reorder does
# As you can see from the output below,it output a factor with Levels
with(rank,reorder(rank,-ab))
#> [1] 792  1126 1314 1439 1446 1623
#> attr(,"scores")
#>     792    1126    1314    1439    1446    1623 
#> -462.10 -269.70 -207.04 -177.11 -176.00 -140.71 
#> Levels: 792 1126 1314 1439 1446 1623

# And as it is a factor it will be treat as discrete value
# Therefore ggplot will display all value in the axis and
# your scale_x_conTinuous will causing error as it apply conTinuous to 
# discrete value
ggplot(rank,y = ab))+
  geom_bar(stat = "identity")+
  scale_x_conTinuous(breaks=seq(792,8538,10))+
  labs(x = "Abundance Rank",y = "Abundance") +
  theme_bw()+
  theme(panel.grid.minor = elemenT_Blank(),axis.text.x = element_text(angle = 90))
#> Error: Discrete value supplied to conTinuous scale

请注意,当您按 ab 重新排序时,数据可能不会像以前那样按连续顺序排列,因此如果人们误认为 x 轴是连续的,而实际上不是,则该图会令人困惑。

可能需要重新虑您想在这里实现什么,您想通过图表讲述什么故事。

# Another way to visualize the order is using fill to visualized the rank
graph_data <- rank %>%
  # create a rank variable with negative ab value result
  # in biggest value rank 1st
  mutate(rank_ab = rank(-ab))
graph_data
#>   species     ab rank rank_ab
#> 1   PEGR2 462.10  792       1
#> 2    COUM 269.70 1126       2
#> 3    KRGR 207.04 1314       3
#> 4    KRER 177.11 1439       4
#> 5    PEBR 176.00 1446       5
#> 6  CAMI12 140.71 1623       6

ggplot(graph_data,aes(x = rank,y = ab))+
  # Then here graph data with fill geom_bar
  geom_bar(stat = "identity",mapping = aes(fill = rank_ab)) +
  scale_x_conTinuous(breaks=seq(792,100))+
  labs(x = "Abundance Rank",axis.text.x = element_text(angle = 90))

由于重新排序,缩放 x 轴不起作用?

由 reprex package (v2.0.0) 于 2021 年 4 月 28 日创建

大佬总结

以上是大佬教程为你收集整理的由于重新排序,缩放 x 轴不起作用?全部内容,希望文章能够帮你解决由于重新排序,缩放 x 轴不起作用?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。