gpt4 book ai didi

r - 根据 data.frame 列值 R 分配点颜色

转载 作者:行者123 更新时间:2023-12-04 03:19:45 24 4
gpt4 key购买 nike

这是我关于 SO 的第一个问题,我希望有人能帮我回答。

我正在使用 R 从 csv 读取数据与 data<-read.csv("/data.csv")并得到类似的东西:

Group    x   y  size    Color
Medium 1 2 2000 yellow
Small -1 2 1000 red
Large 2 -1 4000 green
Other -1 -1 2500 blue

每个组的颜色可能会有所不同,当 csv 时,它们由一个公式分配。文件已生成,但这些都是可能的颜色(组数也可能会有所不同)。

我一直在尝试使用 ggplot()像这样:
data<-read.csv("data.csv")
xlim<-max(c(abs(min(data$x)),abs(max(data$x))))
ylim<-max(c(abs(min(data$y)),abs(max(data$y))))
data$Color<-as.character(data$Color)
print(data)
ggplot(data, aes(x = x, y = y, label = Group)) +
geom_point(aes(size = size, colour = Group), show.legend = TRUE) +
scale_color_manual(values=c(data$Color)) +
geom_text(size = 4) +
scale_size(range = c(5,15)) +
scale_x_continuous(name="x", limits=c(xlim*-1-1,xlim+1))+
scale_y_continuous(name="y", limits=c(ylim*-1-1,ylim+1))+
theme_bw()

除了颜色,一切都是正确的
  • 小被画成蓝色
  • 介质为红色
  • 其他绘制绿色
  • 大号画黄

  • 我注意到图例按字母顺序排列在正确的组(大、中、其他、小)中,但颜色保留在 csv 中。文件顺序。

    这是情节的屏幕截图。

    enter image description here

    谁能告诉我我的代码中缺少什么来解决这个问题?欢迎其他实现相同结果的方法。

    最佳答案

    一种方法,如 help("scale_colour_manual") 所建议的那样是使用命名字符向量:

    col <- as.character(data$Color)
    names(col) <- as.character(data$Group)

    然后映射 values这个向量的比例参数
    # just showing the relevant line
    scale_color_manual(values=col) +

    完整代码
    xlim<-max(c(abs(min(data$x)),abs(max(data$x))))
    ylim<-max(c(abs(min(data$y)),abs(max(data$y))))

    col <- as.character(data$Color)
    names(col) <- as.character(data$Group)

    ggplot(data, aes(x = x, y = y, label = Group)) +
    geom_point(aes(size = size, colour = Group), show.legend = TRUE) +
    scale_color_manual(values=col) +
    geom_text(size = 4) +
    scale_size(range = c(5,15)) +
    scale_x_continuous(name="x", limits=c(xlim*-1-1,xlim+1))+
    scale_y_continuous(name="y", limits=c(ylim*-1-1,ylim+1))+
    theme_bw()

    输出:

    enter image description here

    数据
    data <- read.table("Group    x   y  size    Color
    Medium 1 2 2000 yellow
    Small -1 2 1000 red
    Large 2 -1 4000 green
    Other -1 -1 2500 blue",head=TRUE)

    关于r - 根据 data.frame 列值 R 分配点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279570/

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