使用ggplot2的stat_密度_2d仅显示高密度区域

2023-11-24

我想将 stat_密度2D 函数与分类变量一起使用,但将绘图限制在高密度区域,以减少重叠并提高易读性。

我们以以下数据为例:

plot_data <-
  data.frame(X = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)),
             Y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)),
             Label = c(rep('A', 300), rep('B', 150)))

ggplot(plot_data, aes(X, Y, colour = Label)) + geom_point()

enter image description here

通过二维密度图,我们获得重叠密度

ggplot(plot_data, aes(X, Y)) + 
  stat_density_2d(geom = "polygon", aes(alpha = ..level.., fill = Label))

2D-density plot

是否可以只绘制高密度区域(例如level>0.03)?我找到的唯一解决方案是“作弊”并手动修改..levels..变量,可以是阶跃函数,也可以是任何幂变换,就像这个简单的例子一样。

ggplot(plot_data, aes(X, Y)) + 
  stat_density_2d(geom = "polygon", aes(alpha = (..level..) ^ 2, fill = Label)) + 
  scale_alpha_continuous(range = c(0, 1))

2D-density plot with squared levels

而不是修改..levels..变量,是否可以要求 ggplot2/stat_密度2D 函数仅关注特定范围的密度级别?我尝试过玩range or limits的论点scale_alpha_continuous函数没有任何相关结果...

Thanks!


Option 1
通过添加到stat_density_2d论证bins您绝对可以避免过度绘制,以一种非常经济的方式控制和吸引人们对许多密度区域的注意。

set.seed(123)
plot_data <-
  data.frame(
    X = c(rnorm(300, 3, 2.5), rnorm(150, 7, 2)),
    Y = c(rnorm(300, 6, 2.5), rnorm(150, 2, 2)),
    Label = c(rep('A', 300), rep('B', 150))
  )
ggplot(plot_data, aes(X, Y, group = Label)) +
  stat_density_2d(geom = "polygon",
                  aes(alpha = ..level.., fill = Label),
                  bins = 4) 

enter image description here

Option 2
手动分配颜色,对于我们不想绘制的那些级别,NA。主要缺点是,我们应该提前知道所需的级别和颜色数量(或计算它们)。在我的例子中set.seed(123)我们需要 7 个。

ggplot(plot_data, aes(X, Y, group = Label)) +
  stat_density_2d(geom = "polygon", aes(fill = as.factor(..level..))) +
  scale_fill_manual(values = c(NA, NA, NA,"#BDD7E7", "#6BAED6", "#3182BD", "#08519C"))

enter image description here

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

使用ggplot2的stat_密度_2d仅显示高密度区域 的相关文章

  • 在 mts 对象上使用 Apply 系列函数

    在 mts 对象上使用 apply 或 sapply 会在发送到函数时删除其时间序列属性 我应该如何在 mts 对象中的每个时间序列上应用相同的函数 带有 ts 输入和 ts 输出 并返回它 最好是 mts 我的意思是除了使用 for 循环
  • R:错误消息---包错误:“functionName”未从当前命名空间解析

    我正在使用一个一直运行到 R3 0 的软件包 问题如上所述 当我们调用在 R 2 15 2 中工作的函数时 从 R 3 0 开始我们得到一个错误 Error in C solarspectrum3 as double lon as doub
  • 来自 data.frame 每一列的随机样本

    我想从 a 的每一行中抽取随机样本data frame独立于其他行 这是一个例子 此代码为每行选择相同的列 但我需要为每行独立选择列 library plyr set seed 12345 df1 lt mdply data frame m
  • profvis() 何时以及为何显示“源不可用”?

    我经常分析 R 代码 并大量使用 profvis 对于某些函数 浏览器窗口的上半部分会显示源代码 有时则不会 我不知道什么时候会出现这种情况 对我来说这似乎是随机的 有谁知道 profvis 何时以及为什么无法在顶部窗口中显示代码 发生这种
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • glm() 模型的交叉验证

    我正在尝试对我之前在 R 中构建的一些 glm 模型进行 10 倍交叉验证 我对cv glm 函数在boot包 尽管我已经阅读了很多帮助文件 当我提供以下公式时 library boot cv glm data glmfit K 10 这里
  • readRDS() 加载额外的包

    什么情况下会出现readRDS R 中的函数尝试加载包 命名空间 我很惊讶地在新的 R 会话中看到以下内容 gt loadedNamespaces 1 base datasets graphics grDevices methods sta
  • r Shiny 中的 fileInput 函数没有响应

    我是 R 和 R闪亮的新手 一直致力于构建一个统计应用程序 该应用程序将允许用户导入文件 然后对数据运行不同的统计程序 直到最近 fileData 函数一直对我来说运行良好 现在每当我尝试上传文件时 都不会打开任何内容 我已尝试了所有我能想
  • R 条形图中的 X 轴

    我想问一个关于 barplot 轴的问题 首先请看我的数据 SerNo DOY Rain 1 350 0 2 351 0 3 352 0 4 353 0 5 354 0 6 355 0 7 356 0 8 357 0 9 358 0 10
  • R:在 Shiny 中,如何修复应用于“反应性”类对象的“xtable”没有适用的方法

    我收到此错误 Error in UseMethod xtable no applicable method for xtable applied to an object of class reactive UI R library shi
  • R:在函数中包含循环?

    以下代码可用于创建一个 data frame 其中 Kendall Tau 和 Spearman 相关结果彼此相邻 data mtcars mtcars correlation lt function x y df1 cor data fr
  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 如何在 Shiny 中动态渲染的 textInput 添加样式元素

    你好堆栈溢出 在我最近提出的问题中 我已经解决了一些与动态渲染 UI 元素相关的主要问题 并在一些了不起的人的帮助下动态创建了观察者 参见此处 动态渲染的 UI 如何在第二次运行时删除旧的反应变量 https stackoverflow c
  • 如何使用r中的dplyr在特定位置插入空白行

    我想在数据框中的特定位置插入空白行 我的数据框是这样的 dat lt data frame group c rep A 1 rep B 4 rep C 2 rep D 2 group 1 A 2 B 3 B 4 B 5 B 6 C 7 C
  • 在 Linux 下更改 RStudio 用户界面(不是图形等)中的字体大小

    This is not关于更改使用 RStudio 生成的图表中的字体大小的问题 我已经知道该怎么做了 我在配备 视网膜 显示屏的 MacBook Pro 上的 Linux 下使用 RStudio 我使用 KDE 作为我的窗口管理器 我可以
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 通过 RCpp 返回 NA

    新手 RCpp 问题在这里 How can I make a NumericVector returnNA到R 例如 假设我有一个 RCpp 代码 它分配NA到向量的第一个元素 RCpp export NumericVector myFun
  • 如何根据查找表匹配多列

    我有以下两个数据框 lookup lt data frame id c A B C price c 1 2 3 results lt data frame price 1 c 2 2 1 price 2 c 3 1 1 我现在想要浏览所有列
  • 如何处理包内部的 R 数据?

    我正在开发的 R 包需要多个 R 数据对象 例如预先计算的模型和参数 目前 我将包的 数据 目录中的每个对象放在单独的 RData 文件中 使用该包时 用户可以使用 数据 功能将这些对象附加到他们的环境中 我想要的行为是 在加载包时 数据对
  • DT数据表中的列对齐

    In my shiny我正在使用的应用程序datatable函数来自DT库构建一个表格并希望将列居中对齐 我可以用formatStyle column textAlign center 但它只影响列体而不影响标题 我们必须设置columnD

随机推荐

  • C# CPU 和 GPU 温度

    我正在为系统性能创建个人监控程序 但在弄清楚 C 如何检索 CPU 和 GPU 温度信息时遇到问题 我已经让程序通过 PerformanceCounter 检索 CPU 负载和频率信息 以及各种其他信息 但我无法找到 CPU 温度的实例 对
  • python中urllib的响应时间

    我想在使用时获得响应时间urllib 我做了下面的代码 但它超过了响应时间 我可以利用时间吗urllib或者有其他方法吗 import urllib import datetime def main urllist http google
  • java中如何调用抽象类方法

    我想在我自己的类中调用抽象类的方法 抽象类是 public abstract class Call public Connection getEarliestConnection Connection earliest null retur
  • 在 Go 包中哪里放​​置测试的共享代码? [复制]

    这个问题在这里已经有答案了 我有一个包含多个文件的 Go 包 按照 Go 标准 我正在为包中的每个源文件创建一个关联的测试文件 就我而言 不同的测试使用相同的测试帮助功能 我不希望这些函数出现在包源文件中 因为它仅用于测试目的 我还想避免在
  • 编辑文本最大长度并在 texview 中显示长度

    我有一个编辑文本和一个文本视图 我想在编辑文本中设置最大长度 它显示在我的文本视图中 每次用户输入字符时 它都会减去字符数 例如 我将编辑文本的最大长度设置为 150 如果用户输入 150 个字符 他 她就无法再输入了 如何解决这个问题 设
  • 抓取亚马逊时被阻止(即使有标头、代理、延迟)[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我有一个Python代码来抓取亚马逊产品列表 我已经设置了代理和标头 我也有sleep 每次爬行之前 但是 我仍然无法获取数据 我收到的消息是 要讨论自动访问亚马逊数据 请联系
  • 如果两个不同网站上的会话名称相同,会发生什么情况?

    我有两个差异 项目在我的XAMPP说是Project1 and Project2 当我登录时Project1 我检查身份验证 如果成功则存储会话 会话名称是 SESSION username 上述过程与Project2 现在 为了防止直接访
  • ffmpeg退出状态-1094995529

    我正在开发一个应用程序 使打电话给ffprobe返回非正统的退出状态 1094995529对于 Windows 上的某些文件 这个退出状态是一致给出的 并且有一些小的讨论这个的 为什么给出这个值 它记录在哪里 我是否可以期望此状态在允许的退
  • document.getElementByID 外部还是内联?

    我一直在尝试使用document getElementByID从外部 JS 文件中提取 HTML 文件的信息 但它似乎不起作用 是否document getElementByID仅当它与 HTML 文件内联时才有效 或者它可以在外部 JS
  • 如何让 Windows 窗体设计器使用外部程序集中的资源?

    我在资源文件中有一些资源 在本例中为图像 我在 Windows 窗体项目中的控件上使用这些资源 Visual Studio 资源选择对话框没有很好地支持从资源文件中选择图像 除非它们位于特定位置 但您可以直接编辑设计器文件 这工作得很好 应
  • 如何使用 git-bundle 保持开发同步?

    我需要使我的开发树在不同的计算机上保持同步 并且它们之间没有网络连接 我们有一个中央 git 存储库 我通常在我的办公室计算机上使用我自己的克隆 有时我需要在另一台从未连接到办公网络的计算机上进行一些开发 没有一台计算机曾经连接到互联网 可
  • 如何直接更新像素——使用CGImage和直接CGDataProvider

    实际问题 有几个答案可以解决我的问题 我可以强制CGImage从直接数据提供者 使用创建的CGDataProviderCreateDirect like CGContextDrawImage做 或者有其他方法可以设置 self layer
  • 以编程方式在 WPF 中创建网格作为模板

    我想以编程方式创建一个具有样式的基本用户控件 在这种风格中我想添加一个Grid 没问题 但我无法向该网格添加列定义 我的示例代码是 ControlTemplate templ new ControlTemplate FrameworkEle
  • 如何启用 NestJs swagger 4.x 插件

    如何使用新的 swagger 插件 我的编译器选项中有它 compilerOptions plugins nestjs swagger plugin 我正在运行该应用程序nest start如上所述 https docs nestjs co
  • androidx_security_crypto_encrypted_prefs_key_keyset不存在

    我正在尝试使用更安全的方式编辑用户的共享首选项集EncryptedSharedPreferences private fun provideSecureSharedPreference context Context SharedPrefe
  • 如何更改内存地址中存储的值?

    可以说内存地址0A7F03E4存储一个值124 如何将其更改为300使用Python 是否有针对此类任务的模块 gt gt gt import ctypes gt gt gt memfield ctypes c char from addr
  • WooCommerce:在订单中保存对产品的更改时挂钩

    我已经找了好几个小时了 在编辑现有订单中的产品数量后 我无法弄清楚如何在单击 保存 时执行功能 我试过这个 add action woocommerce order edit product your function name funct
  • 使用 requireJs 的模块中的循环依赖关系

    阅读 requireJs 文档 为了修复循环依赖 建议使用exports为该模块创建一个空对象 该对象可立即供其他模块引用 我尝试了这段代码 但它似乎不起作用 怎么了 P S 阅读评论以查看输出 特别是 setTimeout 调用中的 B
  • 如何在我的网络服务器上检测移动客户端?

    当http请求到达我的服务器时 我如何检测它是否来自iphone android或其他设备 您可以获取用户代理 这表明它是什么浏览器类型 iphone chrome 即任何浏览器 来帮你 http whatsmyuseragent com
  • 使用ggplot2的stat_密度_2d仅显示高密度区域

    我想将 stat 密度2D 函数与分类变量一起使用 但将绘图限制在高密度区域 以减少重叠并提高易读性 我们以以下数据为例 plot data lt data frame X c rnorm 300 3 2 5 rnorm 150 7 2 Y