ggVis:在不同数据集上创建具有多个图层的绘图

2023-12-29

我正在尝试使用 ggvis 重现 ggplot2 图。 该图旨在表示点的坐标(来自对应分析)及其簇 (hclust) 标准色散椭圆。


TL; DR

我想根据多个数据集制作一个具有多个图层的 ggvis 图。 因此,功能/管道方法阻止我对其中一层进行分组,而不是对另一层进行分组。

整个(简要注释)代码就在那里:https://gist.github.com/RCura/a135446cda079f4fbc10 https://gist.github.com/RCura/a135446cda079f4fbc10


这是创建数据的代码:

 a <- rnorm(n = 100, mean = 50, sd = 5)

 b <- rnorm(n = 100, mean = 50, sd = 5)

 c <- rnorm(n = 100, mean = 50, sd = 5)

 mydf <- data.frame(A = a, B = b, C = c, row.names = c(1:100))

 library(ade4)

 myCA <- dudi.coa(df = mydf,scannf = FALSE,  nf = 2)

 myDist <- dist.dudi(myCA, amongrow = TRUE)

 myClust <- hclust(d = myDist, method = "ward.D2")

 myClusters <- cutree(tree = myClust, k = 3)

 myCAdata <- data.frame(Axis1 = myCA$li$Axis1, Axis2 = myCA$li$Axis2, Cluster = as.factor(myClusters))

 library(ellipse) # Compute Standard Deviation Ellipse

 df_ellipse <- data.frame()

 for(g in levels(myCAdata$Cluster)){
   df_ellipse <- rbind(df_ellipse,
                 cbind(as.data.frame(
                 with(myCAdata[myCAdata$Cluster==g,],
                 ellipse(cor(Axis1, Axis2),
                 level=0.7,
                 scale=c(sd(Axis1),sd(Axis2)),
                 centre=c(mean(Axis1),mean(Axis2))))),
                 Cluster=g))
 }

我可以通过 ggplot2 绘制此图:

library(ggplot2)

myPlot <- ggplot(data=myCAdata, aes(x=Axis1, y=Axis2,colour=Cluster)) +
  geom_point(size=1.5, alpha=.6) +
  geom_vline(xintercept = 0, colour="black",alpha = 0.5, linetype = "longdash" ) +
  geom_hline(xintercept = 0, colour="black", alpha = 0.5, linetype = "longdash" ) +
  geom_path(data=df_ellipse, aes(x=x, y=y,colour=Cluster), size=0.5, linetype=1)
myPlot

但我找不到如何使用 ggvis 绘制此图。

我可以绘制两个不同的图层:

library(ggvis)

all_values <- function(x) { paste0(names(x), ": ", format(x), collapse = "<br />")}

 ggDF <- myCAdata

 ggDF$name <- row.names(ggDF)

## Coordinates plot
myCoordPlot <- ggvis(x = ~Axis1, y = ~Axis2, key := ~name, data = ggDF) %>%

  layer_points(size := 15, fill= ~Cluster, data = ggDF) %>%

  add_tooltip(all_values, "hover")

 myCoordPlot

椭圆图(无需工具提示)

 myEllPlot <- ggvis(data = df_ellipse, x = ~x,  y = ~ y) %>%

  group_by(Cluster) %>%

  layer_paths(x= ~x, y= ~y, stroke = ~Cluster, strokeWidth := 1)

 myEllPlot

但是当我想在同一个图上绘制两层时:

 myFullPlot <- ggvis(data = df_ellipse, x = ~x,  y = ~ y) %>%

 layer_paths(x= ~x, y= ~y, stroke = ~Cluster, strokeWidth := 1) %>%

 layer_points(x = ~Axis1, y= ~Axis2, size := 15, fill= ~Cluster, data = ggDF) %>%

 add_tooltip(all_values, "hover")

 myFullPlot

椭圆没有分组,因此颜色不合适,并且椭圆没有分开。 如果我尝试对椭圆进行分组,它不起作用:group_by 仅是layer_paths 所需要的,并且它会弄乱layer_points。

知道如何进行这项工作吗? 很抱歉这篇很长的文章,但我已经尝试了几个小时来完成这项工作:/


问题是,当您尝试将两者结合起来时,您不会 group_byCluster在省略号数据集上。您需要执行以下操作才能使其正常工作:

myFullPlot <- ggvis(data = df_ellipse, x = ~x, y = ~ y) %>% group_by(Cluster) %>%

  layer_paths(stroke = ~Cluster, strokeWidth := 1) %>%

  layer_points(x = ~Axis1, y= ~Axis2, size := 15, fill= ~Cluster, data = ggDF)

myFullPlot

这样你就可以得到你想要的图表了!

附:我假设您的数据创建存在一些随机性,因为我得到的数据集与您的不同。

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

ggVis:在不同数据集上创建具有多个图层的绘图 的相关文章

  • 在函数中使用 quit/q 会导致 RStudio 出现致命错误

    更多的是好奇 但当你使用时q or quit在 R studio 内的函数内部 它会导致致命错误 如下所示 但 rgui 中的相同函数会导致 R 像往常一样停止 并且仅使用q 在 RStudio 中按预期关闭 R 为什么q在函数中导致 RS
  • 使用自定义渐变填充直方图箱

    我想在 R 和 ggplot2 中创建一个直方图 其中根据连续的 x 值填充箱 大多数教程仅通过离散值或密度 计数进行着色 下列的这个例子 https stackoverflow com questions 40284227 how to
  • R闪亮主面板显示样式和字体

    我正在学习闪亮的应用程序 并且有一些关于调整布局的基本问题 特别是样式和字体 希望得到指点或明确的答案 谢谢 考虑一个基本的输入输出应用程序 用户在 sidebarPanel 中输入数据 然后在 mainPanel 中反应性地输出结果 如何
  • R data.table 连接不等式条件

    我想使用 data table 包根据多个不等式条件对数据进行子集化 data table 手册中的示例展示了如何使用字符变量执行此操作 但不显示数字不等式 我还了解了如何使用子集函数来执行此操作 但我真的很想利用 data table 二
  • 将所有分号替换为空格 pt2

    我尝试对 2000 多行关键字的列表运行文本分析 但它们的列出方式如下 战略 管理风格 组织 所以当我使用 tm 删除标点符号时 它就变成了 组织的战略管理风格 我认为这在某种程度上破坏了我常用术语的分析 我尝试过使用 vector lt
  • 删除缺失的数据值

    我删除了原始帖子 以便能够发布更大版本的数据集 实际上总共有 418 行 这是我正在进行的生存分析的数据 第一列是 ID 号 其他列标记为 V2 V20 有很多缺失的数据 用 表示 我用coxph 函数来获取以下内容 Saves survi
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • 如何在R中匹配具有相同主键的两个表中的数据

    我有两个表 其中包含有关人员的数据 df1 lt data frame id c 113 202 377 288 359 name c Alex Silvia Peter Jack Jonny 这为我提供了 id name 1 113 Al
  • 如何读取 R 中的每个 .csv 文件并将其导出到单个大文件中

    你好 我有以下格式的数据 101 20130826T155649 3 1 round 0 10552 180 yellow 12002 1 round 1 19502 150 yellow 22452 1 round 2 28957 130
  • dplyr 中的标准评估:全局环境中的函数出现“无法找到函数”错误

    我试图在 dplyr 中对全局环境中的函数使用标准评估 但出现 无法找到函数 错误 这是一些代码 create data frame df lt data frame x rnorm 10 y rnorm 10 define arbitra
  • R 中使用 `UseMethod()` 与 `inherits()` 来确定对象的类

    如果我需要根据 R 对象的类以不同的方式处理它们 我可以使用if and else在单个函数内 foo lt function x if inherits x list Foo the list else if inherits x num
  • 通过 R 中的数据子集执行计算

    我想对数据框的 PERMNO 列中的每个公司编号进行计算 其摘要可以在此处查看 gt summary companydataRETS PERMNO RET Min 10000 Min 0 971698 1st Qu 32716 1st Qu
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 汇总表中各列的字符值比例

    在这种数据框中 df lt data frame w1 c A A B C A w2 c C A A C C w3 c C A B C B 我需要计算所有列中字符值的列内比例 有趣的是 以下代码适用于大型实际数据集 但对上述玩具数据会引发错
  • 按不规则时间间隔对数据进行分组求和(R语言)

    我正在看这里的 stackoverflow 帖子 R 计算一组内的观察次数 https stackoverflow com questions 65366412 r count number of observations within a
  • 如何定义“f_n-chi-square”函数并使用“uniroot”求置信区间?

    I want to get a 95 confidence interval for the following question 我已经写了函数f n在我的 R 代码中 我首先使用 Normal 随机采样 100 个样本 然后定义函数h
  • 合并数据框而不重复行

    我想合并两个数据框 但如果有多个匹配项 则不想重复行 相反 我想总结一下那天的观察结果 来自 合并 提取两个数据框中与指定列匹配的行并将其连接在一起 如果有多个匹配项 则所有可能的匹配项各贡献一行 这是一些示例代码 days lt as d
  • 按特定样本前缀对列名称向量进行子集化

    假设我有一个如下所示的数据框 ca01 lt c 1 10 ca02 lt c 2 11 ca03 lt c 3 12 stuff 1 lt rep test 10 other lt rep 9 10 data lt data frame
  • 导入错误:无法导入名称“时间戳”

    我使用以下代码在 python 3 6 3 中成功安装了 ggplot conda install c conda forge ggplot 但是当我使用下面的代码将其导入笔记本时 出现错误 from ggplot import Impor
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple

随机推荐

  • 意图附加未删除/替换

    我正在按按钮设置警报 警报是有意触发的 这个意图得到一个额外的 int 来传递给广播接收器 问题是意图的额外内容在第一个时设置一次 单击该按钮 并且在其他单击时不会发生变化 Intent intent new Intent A this B
  • 如何将字符串列表转换为int列表

    我在列表中有这个列表 a 1 2 3 4 1 2 3 4 1 2 3 4 但我需要它是整数 我不确定在哪里使用 int 将 str 更改为 int a 1 2 3 4 1 2 3 4 1 2 3 4 您可以使用嵌套列表理解 如下所示 a 1
  • 通过 Selenium 解码 facebook 上的类名

    我注意到 Facebook 有一些奇怪的类名 看起来是计算机生成的 我不知道这些类是否至少随着时间的推移保持不变 或者它们在某个时间间隔内发生变化 也许有这方面经验的人可以回答 我唯一能看到的是 当我退出 Chrome 并再次打开它时 它仍
  • 使用 DotNetOpenAuth 的两条腿 OAuth

    我已经阅读了两条腿的 OAuth 并了解其背后的原理 我的问题是特定于DotNetOpenAuth http dotnetopenauth net 8000 图书馆 是否有关于如何通过两条腿身份验证使用 DotNetOpenAuth 的示例
  • CORS - 它保护什么?

    I read https developer mozilla org en US docs Web HTTP Access control CORS https developer mozilla org en US docs Web HT
  • Drupal 6,视图 2:是否可以有一个仅适用于注册用户的过滤器?

    是否可以在 Drupal 6 视图中创建仅适用于注册用户的过滤器 对于我需要的一个过滤器 我使用用户投票 使用 Fivestar 和 VotingAPI 来了解他们的用户是否已经投票给该节点 并且当用户是匿名时 就像来自所有匿名用户的所有投
  • 我可以将 ARM 处理器配置为升序堆栈增长方向吗?

    这里有一个问题谈到堆栈增长方向 Michael Burr 回答说 在 ARM 处理器中 堆栈增长方向是可以配置的 即降序 正常行为 堆栈向内存中的零地址 较低地址 增长 或者升序 即堆栈向内存中的较高地址增长 大多数现代系统中堆栈增长的方向
  • Angular:根据服务方法调用设置路由

    我通过以下方式设置了路线配置 NgModule 我有一项服务 可以根据某些条件确定应向用户显示应用程序的哪些部分 我需要调用该服务并根据返回值设置路由 Problem 路由配置是在注释内设置的 我无法了解如何在此类设置中调用服务 更具体地说
  • 有没有办法防止 CALayer 阴影与相邻图层重叠?

    我有一个收藏CALayers 每个层都是同一父层的子层CALayer 并且每个都应用了阴影 这些层是动态定位的 而且层数很多 所以我无法提前预测它们将如何排列 如果这些层彼此相邻 足够近以至于它们几乎接触 则其中一层的阴影CALayers渲
  • SAPbobsCOM 类未注册

    我使用 asp net C 开发了一个 Web 应用程序来下在线订单 我的应用程序 在 SAP 服务器 Windows 2008 R2 上工作正常 但是当我将项目复制到本地计算机 运行 Windows 7 时 出现错误 看不到SAPbobs
  • 如何确定Python脚本运行的操作系统是否是类Unix操作系统?

    我正在尝试通过 Python 脚本确定操作系统是否基于 Unix 我可以想到两种方法来做到这一点 但它们都有缺点 检查是否platform system 在一个元组中 例如 Linux Darwin 问题是我不想提供每个制作的类 Unix
  • JBoss CLI 的特殊字符

    我使用 JBoss 6 4 8 版本处于域模式 我想通过 CLI 添加这 4 个系统属性 1 host myserver server config node system property javax net ssl keyStorePa
  • 许多列的数据表宽度溢出

    哇哦 我的 jquery 数据表插件有这个严重的问题 我有一个包含很多列 超过 35 列 的表 并且该表溢出了我的 div 内容 我尝试了很多方法 包括解决堆栈溢出中相同问题的方法 但仍然无法解决这个问题 所以 我真的需要你的帮助 谢谢你
  • 开始救援未捕获错误

    我正在使用一些包含在 begin rescue 块中的 ruby 代码 但不知何故它仍然崩溃 代码块如下所示 Retrieve messages from server def get messages connection select
  • Azure Pipeline - 使用 Azure Feed 进行 npm 安装错误 403

    我的 NPM 安装步骤配置为使用 npmrc 中的注册表 My npmrc is as follows registry https pkgs dev azure com xxx xxxx xxxx xxxx packaging desig
  • Parent TreeView Item鬼选事件!

    我有一个 TreeView 当引发每个 TreeViewItems Selected 事件时 它会启动一个新窗口
  • Erlang 代码来测量执行操作所花费的时间?

    有人能好心地向我指出一些 erlang 代码吗 它允许我计算运行某些代码片段需要多长时间 我还没有看到有可用的 erlang 库吗 您可以使用erlang statistics http www erlang org doc man erl
  • iOS 钥匙串偶尔会返回空字符串

    我编写了非常安全的应用程序 为银行 并将私钥保存在钥匙串中 我使用以下代码保留私钥 void savePrivatekey NSString Key KeychainItemWrapper keychain KeychainItemWrap
  • 如何调试Android ANR?

    我的 Android 应用程序最近在 Google Play 控制台中收到了大量 ANR 报告 由于这种情况是在我将 Google Analytics 添加到应用程序中时开始发生的 因此我强烈怀疑是 Analytics 造成的 问题是我知道
  • ggVis:在不同数据集上创建具有多个图层的绘图

    我正在尝试使用 ggvis 重现 ggplot2 图 该图旨在表示点的坐标 来自对应分析 及其簇 hclust 标准色散椭圆 TL DR 我想根据多个数据集制作一个具有多个图层的 ggvis 图 因此 功能 管道方法阻止我对其中一层进行分组