ggplot:根据用户定义的颜色按组划分颜色点

2024-02-11

我试图定义 ggplot 中绘制的点组的颜色。我改编了这篇文章的代码:

根据定义的颜色代码为 ggplot 点着色 https://stackoverflow.com/questions/9827193/color-ggplot-points-based-on-defined-color-codes

但是,一旦我有多个由同一分组变量定义的行(而不是每行都有单独的颜色),代码就会失败,而且我不明白为什么。下面是一个可重现的示例:

#create some data
zone  <- c("E","E","C","C","C","E","E") #grouping variable
col <- c(50,100,150,200,250,300,350) #x variable
D <- c(.4,.45,.20,.22,.30,.31,.35) #y variable
df1 <- data.frame(zone, D, col); df1

#create a colour scheme based on grouping variable 'zone'
zone <-c("E","C")
color.codes<-as.character(c("#3399FF", "#FF0000"))
color.names<-c("blue", "red")
df2=data.frame(zone, color.codes, color.names); df2

# merge color specifications with data
df <-merge(df1,df2, by=("zone"), all.x=TRUE, all.y=TRUE); df 

数据如下所示:

zone    D   col color.codes color.names
C     0.20  150     #FF0000         red
C     0.22  200     #FF0000         red
C     0.30  250     #FF0000         red
E     0.40   50     #3399FF        blue
E     0.45  100     #3399FF        blue
E     0.31  300     #3399FF        blue
E     0.35  350     #3399FF        blue

目标是生成一个图,其中区域“C”中的点为红色,“E”中的点为蓝色,但使用引用示例中的代码,所有内容都以红色绘制:

p <- ggplot(data=df, aes(col, D, colour = zone))+ 
  geom_point() 
p + scale_colour_manual(breaks = df$zone, values = df$color.codes)

任何人都可以看到致命的缺陷,为什么这段代码不能以这种方式跨组工作?
预先非常感谢


您处于两种不同的解决方案之间。

一种方法是不将颜色放入df数据框并指定之间的映射zone以及比例调用中所需的颜色:

ggplot(data=df, aes(col, D, colour = zone))+ 
  geom_point() +
  scale_colour_manual(values=setNames(color.codes, zone))

请注意,这不使用color.codes or color.names from df,也不使用df2直接(尽管它确实使用了用于制作的列)df2;如果你有类似的东西df2而不是单独的列,您可以使用setNames(df2$color.codes, df2$zone)反而)。

另一种方法将颜色直接映射到颜色代码并使用scale_color_identity,但随后必须进行一些额外的标记才能获得正确的图例。

ggplot(data=df, aes(col, D, colour = color.codes)) +
  geom_point() +
  scale_colour_identity("zone", breaks=color.codes, labels=zone, guide="legend")

我认为第一个是更好的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot:根据用户定义的颜色按组划分颜色点 的相关文章

  • android 弹出菜单文本颜色(AppCompat)

    我需要更改 popuo 菜单的文本颜色 但我找不到任何方法来执行此操作 我可以更改 popomenu 的背景但不能更改文本 我以这种方式编辑 style xml
  • 为什么R中的转置函数将数字转换为字符?

    我在 Excel 中构建了一个简单的矩阵 其中包含一些字符值和一些数值 Excel 中设置的数据的屏幕截图 https i stack imgur com UpQ1I png 我使用 openxlsx 包将其读入 R 如下所示 librar
  • merge.zoo 删除时区

    的结果merge zoo与其输入的时区不同 考虑下面的例子 library zoo zoo a zoo data frame a 1 5 seq as POSIXct 2014 01 01 00 00 01 tz UTC as POSIXc
  • 从 R 中的因子记录创建变量

    我有点迷失了 我有一个如下所示的数据框 tract ageClass count 1 0 4 71 2 0 4 192 3 0 4 81 1 5 8 9 2 5 8 86 3 5 8 42 我想要这样的结果 tract 0 4 5 8 1
  • R 语言与 php 集成以获取 R 的结果

    我有以下 R 脚本 assign data path data path lt C Users Owner Desktop R work assign valus to the following three percent train p
  • R 中具有重叠样本的分割向量

    假设我有一个包含 1000 个值的向量 我想将此向量 拆分 分区 分组 为多个向量 每个向量包含 200 个值 并且它们之间有 100 个值的重叠 E g vec seq 1 1000 splitWithOverlap vec 200 10
  • 如何解决这个错误--dbWriteTable()

    我成功连接到 MYSQL DB 并尝试将结果写回数据库 dbWriteTable con predicted min forecast min 其中 Forecast min 只是双精度向量 我收到此错误消息 函数 类 fdef mtabl
  • 在 R 中执行 read.csv 时未读取所有行

    这是输入文件 http www yourfilelink com get php fid 841283 http www yourfilelink com get php fid 841283 我执行了 options stringsAsF
  • 添加图例到散点图

    这个问题已经被问到了 但我想找到一个更清晰的解决方案 给定 X 是 100x2 数据 标签是标签向量 从 1 到 9 我绘制散点图如下 pl scatter X 0 X 1 c labels pl show 如何仅用一行代码添加图例来解释颜
  • R 中的“CSS 中的非平稳季节性 AR 部分”错误

    我正在尝试拟合季节性分解系列的 ARIMA 模型 但是当我尝试执行以下操作时 fit arima diff series order c 1 0 0 seasonal list order c 1 0 0 period NA 它给我以下错误
  • 绘制由 R 中的 caret 包训练的 SVM 线性模型

    Purpose 我试图通过可视化 SVM 线性分类模型plot 我正在使用中提供的示例代码和数据kernlab包注意到了caret实际上通过训练 svmksvm函数 参考这里的src代码 https github com topepo ca
  • 只保留矩阵中某些列具有相同元素的行

    让我举个例子 假设我们有 3 个表 重点关注 N 列 Table 1 Table 2 Table 3 N Values N Values N Values 5 1 5 1 5 1 10 2 6 2 6 21 15 3 10 3 10 5 1
  • 通过在 R 中填充 NA - 使栅格达到相同程度

    我有几个具有不同几何形状 轮廓的裁剪栅格 具体而言 同一田地的几年的空间产量图 但范围有所不同 测量并不总是整个田地的整体 但在某些年份只是其中的一部分 我想计算这些地图的平均值并将它们组合成一个平均值栅格 然而 这确实意味着 假设 5 层
  • 如何在 R 中创建没有情节的图例?

    这是一个艺术项目 我创建了一个包含 5 种不同颜色的许多点的散点图 我想创建一个与绘图完全分开的图例 因为它不在绘图上 也不在绘图旁边 而是在它自己的窗口中 因此我可以将图例保存为它自己的 pdf 文件 这样我就可以将我的情节和图例分开打印
  • R 热图中的颜色标签(文本)

    我正在尝试在 R 中制作一个热图 其中标签文本是彩色的 以指示数据点来自哪个组 我目前正在使用 heatmap 2 但很乐意使用另一个包 heatmap 2 data matrix data trace none dendrogram no
  • 如何更改 ggplot2 中轴标签上的小数位数?

    具体来说 这是在facet grid 中 在谷歌上广泛搜索了类似的问题 但不清楚语法或它的去向 我想要的是 y 轴上的每个数字在小数点后都有两位数 即使尾随一位是 0 这是scale y continuous 或 element text
  • 如何识别数据集中其他列之和的列

    我想编写一个函数 最好用 R 语言 但也欢迎其他语言 它可以识别数据集中列之间的关系 仅限于加法 减法 其实际应用是在大型多列财务数据集上运行它 其中某些列是其他列的小计 并识别此类小计 理想情况下 我希望允许一些小的差异 例如允许舍入问题
  • 如何将管道链 (magrittr) 的结果提供给对象

    这是一个相当简单的问题 但我无法通过 google stackexchange 找到答案并查看 magrittr 的文档 如何提供通过 gt 连接的函数链的结果来创建向量 我看到大多数人做的是 a lt data frame x c 1 3
  • xts 函数不将我的 POSIXct 日期视为适当的基于时间的对象

    我创建了一个包含两列的数据框 gt head data frame Date Rainfall 1 1992 01 06 14 00 00 0 3 2 1992 01 06 15 00 00 0 2 3 1992 01 06 16 00 0
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被

随机推荐