gpt4 book ai didi

r - ggplot2 - 用一列绘制 Y 轴但从另一列标记

转载 作者:行者123 更新时间:2023-12-05 07:08:20 24 4
gpt4 key购买 nike

我正在创建跨多个区域/时间的物种丰度的气泡图。我需要 Y 轴从顶部开始按物种分类顺序排列,因此有一个单独的整数列“Number”,我用它来创建绘图以保持正确的顺序。但我必须用“物种”列替换 Y 轴标签。

我可能忽略了一些简单的事情,但我已经尝试了几件事,但无法使任何事情发挥作用。

我无法使用物种列绘制绘图的原因是总共有 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))

提前致谢。

enter image description here

最佳答案

假设您仍然感兴趣,并使用 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))

然后从那里拿走它。

关于r - ggplot2 - 用一列绘制 Y 轴但从另一列标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61891120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com