首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggplot2 -使用一列绘制Y轴,但从另一列进行标注

ggplot2 -使用一列绘制Y轴,但从另一列进行标注
EN

Stack Overflow用户
提问于 2020-05-19 20:30:33
回答 1查看 181关注 0票数 2

我正在创建几个区域/时间的物种丰富度的气泡图。我需要Y轴是从顶部开始的物种分类顺序,所以有一个单独的整数列"Number“,我使用它来创建绘图,以保持正确的顺序。但是我必须将Y轴标签替换为"Species“列。

我可能忽略了一些简单的东西,但我已经尝试了几种方法,但都不能正常工作。

我不能使用物种列绘制图形的原因是,总共有100多个物种,而R将顺序转换为字母数字,这更糟糕。我也试过用这种方式修复它。

我已经尝试在导入时保留顺序,scale_y_discrete函数(见下文)和其他地方提出的几个其他解决方案。Str_order不再可用,我遇到的一两个其他推荐命令也不再可用。

任何建议都将非常受欢迎。

代码语言:javascript
复制
  ggplot(data, aes(x=Sample, y=Number)) +
geom_point(aes(size=ifelse(Value==0, NA, Value), alpha = 0.75)) +
scale_size(range = c(0, 5)) +
scale_y_discrete(limits=c(data$Species)
代码语言:javascript
复制
structure(list(Year = c("1984 - 1989", "2017 - 2020", "1984 - 1989", 
"2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", 
"1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", 
"2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", 
"1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", 
"2017 - 2020", "1984 - 1989", "2017 - 2020", "1984 - 1989", "2017 - 2020", 
"1984 - 1989", "2017 - 2020"), Sample = c("Developed_zone_1992", 
"Developed_zone_2020", "Paddock_zone_1992", "Paddock_zone_2020", 
"Sanctuary_zone_1992", "Sanctuary_zone_2020", "Developed_zone_1992", 
"Developed_zone_2020", "Paddock_zone_1992", "Paddock_zone_2020", 
"Sanctuary_zone_1992", "Sanctuary_zone_2020", "Developed_zone_1992", 
"Developed_zone_2020", "Paddock_zone_1992", "Paddock_zone_2020", 
"Sanctuary_zone_1992", "Sanctuary_zone_2020", "Developed_zone_1992", 
"Developed_zone_2020", "Paddock_zone_1992", "Paddock_zone_2020", 
"Sanctuary_zone_1992", "Sanctuary_zone_2020", "Developed_zone_1992", 
"Developed_zone_2020", "Paddock_zone_1992", "Paddock_zone_2020", 
"Sanctuary_zone_1992", "Sanctuary_zone_2020"), Colour = c(1L, 
1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 
3L, 1L, 1L, 2L, 2L, 3L, 3L, 1L, 1L, 2L, 2L, 3L, 3L), Value = c(2L, 
5L, 10L, 10L, 0L, 10L, 2L, 0L, 0L, 5L, 0L, 10L, 0L, 0L, 5L, 10L, 
0L, 5L, 0L, 0L, 0L, 2L, 0L, 2L, 2L, 1L, 0L, 10L, 0L, 10L), Family = c("Phasianidae", 
"Phasianidae", "Phasianidae", "Phasianidae", "Phasianidae", "Phasianidae", 
"Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", 
"Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", 
"Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", 
"Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae", "Anatidae"
), Species = c("1. Grey francolin (60)", "1. Grey francolin (60)", 
"1. Grey francolin (60)", "1. Grey francolin (60)", "1. Grey francolin (60)", 
"1. Grey francolin (60)", "2. Egyptian goose (55)", "2. Egyptian goose (55)", 
"2. Egyptian goose (55)", "2. Egyptian goose (55)", "2. Egyptian goose (55)", 
"2. Egyptian goose (55)", "3. Garganey (60)", "3. Garganey (60)", 
"3. Garganey (60)", "3. Garganey (60)", "3. Garganey (60)", "3. Garganey (60)", 
"4. Northern shoveler (62)", "4. Northern shoveler (62)", "4. Northern shoveler (62)", 
"4. Northern shoveler (62)", "4. Northern shoveler (62)", "4. Northern shoveler (62)", 
"5. Mallard (67)", "5. Mallard (67)", "5. Mallard (67)", "5. Mallard (67)", 
"5. Mallard (67)", "5. Mallard (67)"), Number = c(142L, 142L, 
142L, 142L, 142L, 142L, 141L, 141L, 141L, 141L, 141L, 141L, 140L, 
140L, 140L, 140L, 140L, 140L, 139L, 139L, 139L, 139L, 139L, 139L, 
138L, 138L, 138L, 138L, 138L, 138L)), class = "data.frame", row.names = c(NA, 
-30L))

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-07-08 01:00:49

假设您仍然感兴趣,并使用df作为您的数据帧,您可以使用:

代码语言:javascript
复制
sSpeciesLevels <- c("5. Mallard (67)", 
                    "4. Northern shoveler (62)", 
                    "3. Garganey (60)",
                    "2. Egyptian goose (55)",
                    "1. Grey francolin (60)")
            
 ggplot(df, aes(x = Sample, 
                y = factor(Species, 
                           levels = sSpeciesLevels))) +
     geom_point(aes(size = ifelse(Value == 0, NA, Value)), alpha = 0.75) +
     scale_size(range = c(0, 5))

然后从那里开始。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61891120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档