我正在创建几个区域/时间的物种丰富度的气泡图。我需要Y轴是从顶部开始的物种分类顺序,所以有一个单独的整数列"Number“,我使用它来创建绘图,以保持正确的顺序。但是我必须将Y轴标签替换为"Species“列。
我可能忽略了一些简单的东西,但我已经尝试了几种方法,但都不能正常工作。
我不能使用物种列绘制图形的原因是,总共有100多个物种,而R将顺序转换为字母数字,这更糟糕。我也试过用这种方式修复它。
我已经尝试在导入时保留顺序,scale_y_discrete函数(见下文)和其他地方提出的几个其他解决方案。Str_order不再可用,我遇到的一两个其他推荐命令也不再可用。
任何建议都将非常受欢迎。
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)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))提前谢谢。

发布于 2020-07-08 01:00:49
假设您仍然感兴趣,并使用df作为您的数据帧,您可以使用:
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))然后从那里开始。
https://stackoverflow.com/questions/61891120
复制相似问题