使用scale_fill_manual手动分配颜色仅适用于某些六边形尺寸

2024-01-07

我正在尝试创建一个由六边形计数箱总结的散点图。我希望用户能够定义色标的计数中断。我有这个工作,使用scale_fill_manual()。但奇怪的是,它只是有时有效。在下面的 MWE 中,使用给定的种子值,如果xbins=10,导致绘图存在以下问题:

然而,如果xbins=20 or 40比如说,剧情看起来没有问题:

我的MWE如下:

library(ggplot2)
library(hexbin)
library(RColorBrewer)

set.seed(1)
xbins <- 20

x <- abs(rnorm(10000))
y <- abs(rnorm(10000))
minVal <- min(x, y)
maxVal <- max(x, y)
maxRange <- c(minVal, maxVal)
buffer <- (maxRange[2] - maxRange[1]) / (xbins / 2)
h <- hexbin(x = x, y = y, xbins = xbins, shape = 1, IDs = TRUE,
            xbnds = maxRange, ybnds = maxRange)
hexdf <- data.frame (hcell2xy(h),  hexID = h@cell, counts = h@count)
my_breaks <- c(2, 4, 6, 8, 20, 1000)
clrs <- brewer.pal(length(my_breaks) + 3, "Blues")
clrs <- clrs[3:length(clrs)]
hexdf$countColor <- cut(hexdf$counts, breaks = c(0, my_breaks, Inf), 
                        labels = rev(clrs))

ggplot(hexdf, aes(x = x, y = y, hexID = hexID, fill = countColor)) +
  scale_fill_manual(values = levels(hexdf$countColor)) +
  geom_hex(stat = "identity") + 
  geom_abline(intercept = 0, color = "red", size = 0.25) + 
  coord_fixed(xlim = c(-0.5, (maxRange[2] + buffer)), 
              ylim = c(-0.5, (maxRange[2] + buffer))) + 
  theme(aspect.ratio=1)

我的目标是调整此代码,以便无论分配给 xbins 的值如何,绘图都不会出现问题(突然某些六边形的大小和形状与其他六边形不同)。但是,我很困惑某些 xbins 值可能导致此问题的原因。任何建议将不胜感激。

EDIT:

我在考虑@bdemarest 和@Axeman 的评论后更新示例代码。我按照 @Axeman 推荐的链接中最受欢迎的答案进行操作,并相信当您使用时它更有用scale_fill_continuous()在整数向量上。在这里,我正在努力scale_fill_manual()在因子向量上。结果,我仍然无法实现这个目标。谢谢。

library(ggplot2)
library(hexbin)
library(RColorBrewer)

set.seed(1)
xbins <- 10

x <- abs(rnorm(10000))
y <- abs(rnorm(10000))
minVal <- min(x, y)
maxVal <- max(x, y)
maxRange <- c(minVal, maxVal)
buffer <- (maxRange[2] - maxRange[1]) / (xbins / 2)
bindata = data.frame(x=x,y=y,factor=as.factor(1))

h <- hexbin(bindata, xbins = xbins, IDs = TRUE, xbnds = maxRange, ybnds = maxRange)

counts <- hexTapply (h, bindata$factor, table)
counts <- t (simplify2array (counts))
counts <- melt (counts)
colnames (counts)  <- c ("factor", "ID", "counts")
counts$factor =as.factor(counts$factor)

hexdf <- data.frame (hcell2xy (h),  ID = h@cell)
hexdf <- merge (counts, hexdf)

my_breaks <- c(2, 4, 6, 8, 20, 1000)
clrs <- brewer.pal(length(my_breaks) + 3, "Blues")
clrs <- clrs[3:length(clrs)]
hexdf$countColor <- cut(hexdf$counts, breaks = c(0, my_breaks, Inf), labels = rev(clrs))

ggplot(hexdf, aes(x = x, y = y, fill = countColor)) +
  scale_fill_manual(values = levels(hexdf$countColor)) +
  geom_hex(stat = "identity") + 
  geom_abline(intercept = 0, color = "red", size = 0.25) + 
  coord_cartesian(xlim = c(-0.5, maxRange[2]+buffer), ylim = c(-0.5, maxRange[2]+ buffer)) + theme(aspect.ratio=1)

您可以在“geom”而不是“scale”中定义颜色来修改绘图的比例:

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

使用scale_fill_manual手动分配颜色仅适用于某些六边形尺寸 的相关文章

  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • R 中的 NA 替换函数

    我正在尝试替换矩阵中的 NA mat 零 我在用着mat is na mat lt 0 当我有 18946 个变量的 94531 个观察值或更小的矩阵时 效果很好 但我在 22752 个变量的 112039 个观察值的矩阵上尝试它 R 显示
  • dplyr 中的 Summarize 是否可以不删除数据框中的其他列?

    我有一个包含三列的数据框 我正在尝试进行简单的总结以查找数据框中每个城市的最高温度 但同时保留每个最高温度列出的日期 这是数据框 我们称之为 maxT new ID Date Max TemperatureF 1 TUS 1960 04 0
  • 将值替换为其各自列的名称

    我有一个数据框 Code 401k CVS 101A true 231N true FD54 true 99JB 85F4 true 我试图用相应的列名称 例如 401k 替换 true 字符值 这是我想要的输出 Code 401k CVS
  • 如何在不循环的情况下添加组ID?

    我有数据框 例如 productid ordernum p1 10 p2 20 p3 30 p4 5 p5 20 p6 8 我想添加另一列 称为 groupid 它将产品按顺序分组在一起 一旦 sum ordernum 达到 30 分配一个
  • 查找数据帧列表中同一列中的所有重复值并将其转换为 NULL

    我有一个清单BELGIAN COAST list包含数百个数据帧 df1 df2 15 列 X 1000 行 每个数据帧的最后一列称为Chemicals并包含一些字符 例如Sulfate or Ammonia 但是这一列有很多行Chemic
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 根据另一列中的键累积一列中的值时出现问题

    我有一个看起来像这样的数据框 我需要使用 PROJ ID 列中的字符串创建一个新的值列 并形成 PROJ NAME 列中的值字符串 这里提供的解决方案 根据 r 中另一列的键累积一列中的值 https stackoverflow com q
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 逻辑回归/二项式的 glmnet 误差

    当尝试将 glmnet 与 family binomial 配合以进行逻辑回归拟合时 出现此错误 gt data lt read csv DAFMM HE16 matrix csv header F gt x lt as data fram
  • 比较 R 中的两个字符向量

    我有两个 ID 字符向量 我想比较这两个字符向量 特别是我对以下数字感兴趣 A和B各有多少个ID 有多少个ID在A中但不在B中 有多少个ID在B但不在A 我还想画维恩图 以下是一些可以尝试的基础知识 gt A c Dog Cat Mouse
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • ggplot2、R 中的单条形条形图

    我有以下数据和代码 gt ddf var1 var2 1 aa 73 2 bb 18 3 cc 9 gt gt dput ddf structure list var1 c aa bb cc var2 c 73L 18L 9L Names
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 单击 R 中的 Sankey Chart 线时添加额外的标签值

    以下 R 闪亮脚本创建一个桑基图 如下面的快照所示 我的要求是 当我单击左右节点之间的任何链接 即 a1 和 a2 时 我希望相应的 a3 的总和出现在标签中 例如 a1 中的 A 和 a2 中的 E 总共具有值 50 和 32 因此 我想
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • 可变参数模板、类型推导和 std::function

    我正在尝试创建一个模板函数 可以向该函数传递具有任何类型和数量的参数的其他函数 并将其绑定到std function 我设法做到了这一点 include
  • 如何在 PHP 中从 HTML 列表中提取结构化文本?

    我有这个字符串 ul li Page 1 li li Page 2 ul li Sub Page A li li Sub Page B li li Sub Page C ul li Sub Sub Page I li ul li ul li
  • 捕获错误然后分支逻辑

    如何编写 R 代码 以便在发生错误情况时能够在代码中执行不同的路径 我正在使用一个容易引发错误的函数 当它遇到错误条件时 我想执行不同的函数 这是一个具体的例子 require SuppDists parms lt structure li
  • 使用 for 循环从列表中提取 data.frames

    我有一个列表 并且我已成功提取第一个矩阵的 data frame t using forecast t lt as data frame forecast t 我想知道是否可以使用以下方法对其余元素执行此操作 for i in t ws w
  • 如何在主函数中传递数组。带c++

    include
  • 为什么我找不到 ProgressiveMediaSource?

    看着ExoPlayer 文档 https exoplayer dev hello world html Hello World 示例表明要播放标准视频 您应该使用ProgressiveMediaSource 与我见过的许多在线教程相比 建议
  • 如何启用 Visual Studio 项目的 TypeScript 选项卡,该项目是控制台或自托管网页的 Windows 服务

    我使用 Visual Studio 2015 创建了一个控制台应用程序来使用嵌入的静态文件自行托管 Owin 由于 Visual Studio 不知道它是一个网站项目 因此它会忽略 TypeScript 文件 当我转到项目属性时 Web 项
  • 使用 EPplus 对每个单元格进行数据验证以检查该值是否可用

    我正在使用 Epplus 上传文件 我有两张 xlsx 格式的工作表 我想确保每个单元格都有值 例如 在我的 Excel 中 我有下拉框 如果用户在第一张工作表和第二张工作表中有详细信息是空的 但是这个空工作表只有一个值 该值是通过使用此下
  • 通过CSS将所有照片变成正方形

    我正在尝试将一系列照片制作成方形照片 它们可能是水平矩形 即 600x400 或垂直矩形 400x600 但我想让它们成为 175x175 我的想法是在较小的一侧设置 max height 或 max width 并且不允许在较大的一侧溢出
  • 添加列以选择 *

    在 SQL Server 中 我曾经做过类似的事情来向选择添加额外的列 select case when w1 start date lt w2 start date then to date w2 START date DD MM YYY
  • 在 Locust 中如何从一个任务获取响应并将其传递给其他任务

    我已经开始使用 Locust 进行性能测试 我想向两个不同的端点发出两个发布请求 但是第二个post请求需要第一个请求的响应 如何以方便的方式做到这一点 我已经尝试过如下但没有工作 from locust import HttpLocust
  • Windows Azure 存储表连接超时

    当长时间 几天 运行服务时 我收到来自 Windows Azure 表存储的连接超时异常 即使 get table api 也会返回此异常 为什么会出现这种情况 我该如何解决这个问题 除了 Gaurav 的回答之外 此问题的另一个常见原因是
  • Android 圆形图库或列表视图,具有放大和缩小选项

    我想要一个循环滚动的列表或图库 并且当前项目必须放大 其他项目必须缩小 如下 任何人都可以提供实施的好主意以及任何代码帮助吗 None
  • 不使用指针的递归数据结构

    在攻读计算机科学学士学位期间 我多次遇到过递归数据结构的使用 在 C 中 我总是最终使用指针来使数据结构递归 就像我在 C 中所做的那样 一个简化的示例如下 struct Tree int data struct Tree left rig
  • 执行 Docker Inspect 时如何获取 ENV 变量

    我想知道如何从 dockerspect 获取环境变量 当我跑步时 docker inspect f Config Env PATH 1e2b8689cf06 我得到以下信息 FATA 0000 template 1 9 executing
  • C++ 中的斑点检测

    我是计算机视觉方面的新手 但我需要在 C 中创建一个小功能 即使他上面印有东西 它也会检测一张白纸 并检索 4 个边缘坐标 这就是我真正需要的 这样我就可以使用这些坐标并剪切另一个 jpg 文件 并将剪切的图像用作 opengl 纹理 我不
  • Mac Sierra 中焦点跟随鼠标(无自动提升)

    我知道有关此主题的其他线程 但它们是基于自动引发的和 或所有答案都指向不再开发的软件 我只是在寻找这个简单的功能 Mac 上焦点跟随鼠标 无需自动提升 Zoooom2 能够执行此操作 但他们不再开发自己的软件 我没有使用终端 需要在具有多个
  • Logstash grok 测试与 rspec 有不同的行为?

    我正在为 grok 过滤器创建一个测试套件 有些日志由logstash 正确丰富 但不是rspec 测试 为了测试这一点 我启动了一个 Logstash 实例 其中包含 stdin stdout 和 json 用于输入和输出 这是示例日志
  • jquery ajax请求跨域时返回状态码0

    我正在尝试发出跨域请求 但服务器无法响应 Access Control Allow Origin 我正在尝试读取响应头 当我尝试读取状态代码或就绪状态时 它返回 0 我的 ajax 请求代码如下 ajax url https account
  • 使用scale_fill_manual手动分配颜色仅适用于某些六边形尺寸

    我正在尝试创建一个由六边形计数箱总结的散点图 我希望用户能够定义色标的计数中断 我有这个工作 使用scale fill manual 但奇怪的是 它只是有时有效 在下面的 MWE 中 使用给定的种子值 如果xbins 10 导致绘图存在以下