ggplot2:添加描述散点图两个维度的条件密度曲线

2023-12-26

我有来自两个类别的二维数据的散点图。我想为每个维度添加密度线——而不是在图之外(参见ggplot2 中带有边缘直方图的散点图 https://stackoverflow.com/questions/8545035/scatterplot-with-marginal-histograms-in-ggplot2)但就在绘图表面上。我可以得到 x 轴尺寸,如下所示:

set.seed(123)
dim1 <- c(rnorm(100, mean=1), rnorm(100, mean=4))
dim2 <- rnorm(200, mean=1)
cat <- factor(c(rep("a", 100), rep("b", 100)))
mydf <- data.frame(cbind(dim2, dim1, cat))
ggplot(data=mydf, aes(x=dim1, y=dim2, colour=as.factor(cat))) + 
  geom_point() +
  stat_density(aes(x=dim1, y=(-2+(..scaled..))), 
  position="identity", geom="line")

它看起来像这样:

但我想要一对类似的垂直分布的密度曲线,显示 y 维度上的点的分布。我试过

stat_density(aes(y=dim2, x=0+(..scaled..))), position="identity", geom="line)

但收到错误“stat_密度需要以下缺失的美感:x”。

有任何想法吗?谢谢


您可以获得 dim2 变量的密度。然后,翻转轴并将它们存储在新的 data.frame 中。之后,它只是将它们绘制在另一个图表的顶部。

p <- ggplot(data=mydf, aes(x=dim1, y=dim2, colour=as.factor(cat))) + 
  geom_point() +
  stat_density(aes(x=dim1, y=(-2+(..scaled..))), 
               position="identity", geom="line")

stuff <- ggplot_build(p)
xrange <- stuff[[2]]$ranges[[1]]$x.range  # extract the x range, to make the new densities align with y-axis

## Get densities of dim2
ds <- do.call(rbind, lapply(unique(mydf$cat), function(lev) {
    dens <- with(mydf, density(dim2[cat==lev]))
    data.frame(x=dens$y+xrange[1], y=dens$x, cat=lev)
}))

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

ggplot2:添加描述散点图两个维度的条件密度曲线 的相关文章

随机推荐

  • 计算 Spark DataFrame 中非空值的数量

    我有一个包含一些列的数据框 在进行分析之前 我想了解数据框的完整性 所以我想过滤数据帧并计算每列非空值的数量 可能返回一个数据帧 基本上 我试图达到与中所表达的相同的结果这个问题 https stackoverflow com questi
  • Ada:从文件中读取

    我正在尝试读取一个包含单列的文件Long Float值在Ada如下 with Ada Text IO use Ada Text IO with Ada Long Float Text IO with Ada Sequential IO pr
  • 在编辑表单中管理状态并防止 Blazor 导航

    如果您的表单不干净 即数据已被编辑 您不希望允许用户离开表单 在 Blazor 表单中 编辑状态由EditContext很简单 将字段更改为新值 然后恢复为旧值 并且EditContext仍然相信这个领域已经发生了变化 您可以编写代码来禁用
  • Scrapy是单线程还是多线程?

    Scrapy 中的并发设置很少 例如CONCURRENT REQUESTS 数 http doc scrapy org en latest topics settings html concurrent requests 这是否意味着Scr
  • for循环中i++和++i之间的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的递增 何时使用 x 或 x https stackoverflow com questions 1812990 incrementing in c when to use x or x 有什么
  • MVC 中动态字段的验证

    我的模型看起来像 public class Template Id Title List
  • 计算 awk 中作为参数传递的算术表达式

    如何计算 awk 中作为参数传递的算术表达式 我在一个文件中有这个 1 2 3 1 2 3 当传入此文件时 awk 应该输出 6 7 awk 1 是错误的工具 因为它没有eval 功能 我建议将文件修改为输入bc 1 或使用 shell 算
  • Excel - 将日期从 yymmdd 转换为 dd/mm/yy

    我有一个从 Access 数据库导出的 Excel 文件 I have 25000记录 我需要更换所有记录 日期列未格式化 yymmdd 我需要将日期格式从 yymmdd 更改为 dd mm 19yy 为了yy我需要添加一个常量值19在它前
  • conemu + ssh 清除控制台历史记录

    我正在使用 ConEmu 并且对它完全满意 除了以下事实 如果我使用 PuTTY 进行 SSH 访问 那么我可以在远程计算机上运行命令 例如 vim 或 nano 或 mcedit 或其他打开某种诅咒界面的命令 并且我可以看到控制台命令历史
  • Slim PUT 返回 NULL

    我对 Slim 框架和 PUT 请求有疑问 我有一个小的 jQuery 脚本 它将在单击按钮时更新到期时间 expiry button click function event event preventDefault ajax url h
  • 将带有 .000Z 的日期字符串格式化为 NSDate

    我想将日期字符串格式化为 NSDate 对象 这听起来不是一件大事 要点是 日期字符串在时区值中包含一个点 而不是加号或其他内容 日期看起来像这样 2017 06 04T16 00 00 000Z 我尝试过格式化字符串 例如 yyyy MM
  • 从 Camel 路由向 Weblogic JMS 队列发送消息

    我正在尝试通过 Camel 路由将消息放入 Weblogic JMS 中的队列上 我的目标是最终配置一个路由来使用 jms 队列中的消息 我将先前路由中的数据发布到该队列 这是我的配置
  • WooCommerce - 获取产品页面的类别

    对于我的 WC 产品页面 我需要向 body 标记添加一个类 以便我可以执行一些自定义样式 这是我为此创建的函数 function my add woo cat class classes wooCatIdForThisProduct he
  • 在 JavaScript 中附加事件

    作为对此处问题之一的评论 一位评论者写道 强调我的 通过使用内联 onclick 您正在做类似的事情 但它更难维护并且更容易出现问题 整个 JavaScript 社区已经放弃内联 JavaScript 一段时间了 这是指使用以下方法将事件附
  • 优化图像 - 在 Java 中无损压缩图像

    拥有一个电子商务网站 我们有数千张产品图片 在谷歌上检查页面速度时 它向我显示了这样的内容 我想知道 Java 中是否有任何内置功能或任何第三方库可用 我们可以使用它们来无损压缩我们托管的所有图像 因此 我们可以为客户节省几KB 在互联网上
  • 一次性随机化

    我有一个矩阵 ECGsig 每行包含一个 1 秒长的 ECG 信号 我稍后会对它们进行分类 但我想随机更改行 例如 idx randperm size ECGsig 1 ECGsig ECGsig idx 但是我希望这种情况只发生一次 而不
  • 单击时我的 div 不会 SlideDown() 。

    我正在尝试在我正在组装的一个小网站上有一个下拉菜单 由于某种原因 我可以获取我想要向下滑动到 fadeOut 的 div 并执行其他类似的操作 但我无法将其获取到 SlideDown 我不知道为什么 上面有文字写着 菜单 jQuery 如下
  • 更改活动主题而不重新创建活动

    我有一个活动 在单击按钮时我想更改主题 但我发现主题只能设置一次 而且在 setContentView 之前也是如此 重新开始一项活动对我来说不是一个选择 也许使用 attrs 可以解决这个问题 但我不知道如何使用它 请帮忙 提前致谢 不
  • 如何在 Pygame 中移动 Sprite

    我试图让我的图像 鸟 在屏幕上上下移动 但我不知道该怎么做 这就是我尝试过的 我确定它已经消失了 但我试图弄清楚是否有人可以提供帮助伟大的 import pygame import os screen pygame display set
  • ggplot2:添加描述散点图两个维度的条件密度曲线

    我有来自两个类别的二维数据的散点图 我想为每个维度添加密度线 而不是在图之外 参见ggplot2 中带有边缘直方图的散点图 https stackoverflow com questions 8545035 scatterplot with