R 绘图自定义数据格式变体

2024-03-21

我正在尝试访问customdata通过javascrit分配给每个数据点(例如为每个点分配一个超链接)。然而,我注意到数据格式从一个图变为另一个图,这看起来很奇怪。

这在本例中完美运行(基于this https://stackoverflow.com/questions/71549382/how-to-make-tiles-open-a-hyperlink-using-ggplotly-r帖子),那就是当fill审美是一种character vector:

library(plotly)
library(htmlwidgets)

js <- "function(el, x) {
         el.on('plotly_click', function(d) {
           console.log(d);
           console.log(d.points[0].data.customdata[0]);
       });
       }"

X <- data.frame(x = c(1, 2, 1, 2), y = c(1, 1, 2, 2), z = as.character(1:4), mydata = letters[1:4])

gg <- ggplot(X, aes(x = x, y = y, customdata = mydata)) + geom_tile(aes(fill = z))

ggplotly(gg) %>% onRender(js)

enter image description here As can be seen, a single and correct custom data shows up when clicking on each point. The structure of the customdata is similar to other plots.

然而,当z作为数字变量输入,自定义数据的结构表现得很奇怪:

X <- data.frame(x = c(1, 2, 1, 2), y = c(1, 1, 2, 2), z = 1:4, mydata = letters[1:4])

gg <- ggplot(X, aes(x = x, y = y, customdata = mydata)) + geom_tile(aes(fill = z))

ggplotly(gg) %>% onRender(js)

enter image description here Is this a bug? How can I fix this? In fact, my dataset is much larger than the one in this example.


Edit
@ismirsehregal 提供了适用于上述示例的解决方案。然而,似乎customdata获取向量数据as is,这似乎是非常错误的。因此,如果我们改变顺序X the js脚本停止工作。

展示:

library(plotly)
library(htmlwidgets)

js <- "function(el, x) {
         el.on('plotly_click', function(d) {
           var zdimensions = [ 0, 0 ];
           var vecindex = 0;
           var clickedcustomdata = '';
           
           var zdimensions = [ d.points[0].data.z.length, d.points[0].data.z[0].length ];
           vecindex = d.points[0].pointIndex[0]*zdimensions[1] + d.points[0].pointIndex[1];
           clickedcustomdata = d.points[0].data.customdata[vecindex];
           console.log(d);
           console.log(clickedcustomdata);
         });
       }"

X <- data.frame(x = c(1, 2, 3, 1, 2, 3),
                y = c(1, 1, 1, 2, 2, 2), 
                z = 1:6,
                mydata = letters[1:6])

X <- X[order(-X$z),]

gg <- ggplot(X, aes(x = x, y = y, customdata = mydata)) + geom_tile(aes(fill = z))
fig <- ggplotly(gg) %>% onRender(js)
fig

我想一个潜在的解决方案是提前订购X在 R 中所以它与矩阵顺序匹配?


这是一个基于以下内容的解决方法pointIndex.

我正在计算向量索引customdata根据提供的pointIndex:

library(plotly)
library(htmlwidgets)

js <- "function(el, x) {
         el.on('plotly_click', function(d) {
           var zdimensions = [ 0, 0 ];
           var vecindex = 0;
           var clickedcustomdata = '';
           
           var zdimensions = [ d.points[0].data.z.length, d.points[0].data.z[0].length ];
           vecindex = d.points[0].pointIndex[0]*zdimensions[1] + d.points[0].pointIndex[1];
           clickedcustomdata = d.points[0].data.customdata[vecindex];
           console.log(clickedcustomdata);
         });
       }"

X <- data.frame(x = c(1, 2, 1, 2, 1, 2), y = c(1, 1, 2, 2, 3, 3), z = 1:6, mydata = letters[1:6])
gg <- ggplot(X, aes(x = x, y = y, customdata = mydata)) + geom_tile(aes(fill = z))
fig <- ggplotly(gg) %>% onRender(js)
fig

This https://stackoverflow.com/a/11587049/9841389到达这里很有用。

尽管如此,我仍然鼓励您在 GitHub 上提交问题,以便官方修复此问题。

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

R 绘图自定义数据格式变体 的相关文章

  • 删除颜色的透明度但保留颜色本身

    我想删除颜色的透明度 但保留颜色本身 例如 我喜欢绿色的透明版本 但我想要这种不透明的颜色 library scales show col green alpha green 0 3 gt nice green show col nice
  • 无法使用 RODBC 附加到具有自动编号列的表

    我正在尝试使用 RODBC 将新行插入到 Microsoft Access 数据库中的表中 问题是主键列是一个自动编号 它似乎不允许我省略此列 我正在使用带有append TRUE 的sqlSave 函数和带有单行的数据框 我已经尝试过以下
  • 如何在 R 中调整/控制树形图中的比例(使用“portfolio”库)?

    我正在使用 R 和 portfolio 库来构建树形图 比例默认为 1000 到 1000 例如 我需要它是 0到1000 我知道 map market 有一个 scale 参数 但我不知道要传递给它什么 围绕零的对称颜色映射被硬编码到ma
  • 使用 tidyverse 在 tibble 中“取消嵌套” data.frame 列

    我正在处理从 www 调用返回的一些数据jsonlite and as tibble以某种方式转换成data frame column This result数据有一个Id整数列和ActionCodedata frame 列有两个内部列 这
  • 计算一列中正数和负数的数量

    我想计算数据帧的一列中正值和负值的数量 我在 R 中该怎么做 例如 这里是数据框 logFC logCPM LR PValue FDR Bra15066 5 630822 5 184586 73 79927 8 647868e 18 4 0
  • 如何让 print() 将参数传递给 R 中用户定义的打印方法?

    我在 R 中定义了一个 S3 类 它需要自己的打印方法 当我创建这些对象的列表并打印它时 R 按其应有的方式对列表中的每个元素使用我的打印方法 我想对打印方法实际显示的数量进行一些控制 因此 我的类的 print 方法需要一些额外的参数 但
  • 如何获得 STAN 中最大似然估计的标准误差?

    我在 Stan 中使用最大似然优化 但不幸的是optimizing 函数不报告标准错误 gt MLb4c lt optimizing get stanmodel fitb4c data win data init inits STAN OP
  • par(mfrow=c(1,2)) 不显示并排密度图[重复]

    这个问题在这里已经有答案了 par mfrow c 1 2 plot 1 12 log y plot 1 2 xaxs i 然而 当我尝试做并排密度图时 图会单独输出 load the stud recs dataset library U
  • R 根据事件更新值

    我最近发布了这个问题 该问题已经与我在笔记本电脑上本地使用的 Mysql 数据库相关 由于我在 Mysql 中没有找到问题的解决方案 其他人似乎也没有找到解决方案 所以我想再次发布它 但现在与 R 相关 我使用带有 RMysql 包的数据库
  • 返回数据帧 R 中的下一行

    我有一个看起来像这样的数据框 kind datetime book 2016 04 23 04 23 00 pen 2016 04 23 04 30 00 toy 2016 04 23 06 45 00 我想为数据集中的每一行返回下一行的日
  • 基于另一个数据集获取数据集的子集

    假设我有一个数据集 即 dat1 ID block plot SPID TotHeight 1 1 1 4 44 5 2 1 1 4 51 3 1 1 4 28 7 4 1 1 4 24 5 5 1 1 4 27 3 6 1 1 4 20
  • LDA with topicmodels,如何查看不同文档属于哪些主题?

    我正在使用 topicmodels 包中的 LDA 我已经在大约 30 000 个文档上运行它 获取了 30 个主题 并获得了主题的前 10 个单词 它们看起来非常好 但我想看看哪些文档属于哪个主题的概率最高 我该怎么做 myCorpus
  • numpy.histogram 的 hist 维度,密度 = True

    假设我有这个数组 A array 0 0019879 0 00172861 0 00527226 0 00639585 0 00242005 0 00717373 0 00371651 0 00164218 0 00034572 0 008
  • kableExtra 中的 row_spec() 函数不会在 html 输出中创建水平线

    我想在 kableextra 表中的某一行下方添加一条水平线 row spec 函数的参数 hline after 应该在行下方添加水平线 row spec 文档 https www rdocumentation org packages
  • 如何在for循环中引用变量?

    我正在循环访问不同的 data tables 和 data table 中的变量 但我在引用内部变量时遇到问题for loop dt1 lt data table a1 c 1 2 3 a2 c 4 5 2 dt2 lt data tabl
  • 删除ggplot2中的负图区域[重复]

    这个问题在这里已经有答案了 如何删除 ggplot2 中 x 轴和 y 轴下方的绘图区域 请参见下面的示例 我尝试了几个主题元素 panel border panel margin plot margin 但没有任何运气 p lt ggpl
  • 纵向序列数据的三次样条方法?

    我有一个串行数据 格式如下 time milk Animal ID 30 25 6 1 31 27 2 1 32 24 4 1 33 17 4 1 34 33 6 1 35 25 4 1 33 29 4 2 34 25 4 2 35 24
  • 多功能测试仪替代 system.time

    我已经看到 我认为是这样 使用了类似于 system time 的函数 它可以同时评估多个函数的时间并输出一个输出 我不记得它是什么 并且用我正在使用的术语进行互联网搜索并没有得到我想要的响应 有人知道我正在谈论的功能的名称 位置吗 你想要
  • 时间戳半小时窗口内字段的平均值

    我的数据框有列名Timestamp es看起来像 Timestamp es 2015 04 01 09 07 42 31 2015 04 01 09 08 01 29 5 2015 04 01 09 15 03 18 5 2015 04 0
  • 如何使用 usmap 标记数字而不是名称?

    我知道 usmap 有一个选项label in plot usmap 我想标记一些数字 而不是状态名称 我想 usmap 中应该有与州质心坐标相关的数据 但我不知道如何找到它 如果我能得到 坐标然后我可以用它来标记数字geom text 这

随机推荐

  • 如何计算 (a*b)%c 形式的模数?

    如何计算 a b c 形式的模数 我想计算两个 int 数字相乘的模数 它们几乎处于溢出阶段 这里 c 也是 int a b c a c b c c
  • 是否对使用“OR”的 SQL SERVER 表达式的所有部分进行求值?

    Given WHERE Id Is NULL OR Id Table Id 如果 Id 为 null 表达式的计算结果为 true 第二部分 Id Table Id 是否仍然被考虑 或者 如果第一部分是 c 中的情况 则表达式计算结果为 t
  • 你能在 shell 脚本中生成一个进程吗?

    我试图让我的 bin sh shell 脚本启动另一个应用程序而不暂停执行 也就是说 我正在寻找一种在后台启动它并让我的 shell 脚本继续执行的方法 我希望它能像这样工作 start daemon start success launc
  • 如何使用NamedTemporaryFile(什么时候关闭?)

    我正在尝试编写一系列写入临时文件的函数 然后对写入的文件进行处理 我试图了解该文件是如何处理的 我想做的摘要是 def create function inputs create temp file write some contents
  • JS 私有方法不会在每次构造函数调用时重新定义

    如何创建一个每次调用构造函数时都未定义的 Javascript 私有方法 据我所知 在OOP JS中 私有方法是在 类 的 构造方法 中定义的方法 每次实例化一个新的 对象 时都会调用 我在想也许是一个函数声明 即function name
  • 在 Swift 中使用 obj-c typedef

    我有一个 typedef 如下 typedef NSString VMVideoCategoryType extern VMVideoCategoryType const VMVideoCategoryType MusicVideo ext
  • 组合两个 Runnable 对象

    举例来说 我有一个名为 RunnableA 的 Runnable 它可以执行某些操作 我还有一个名为 RunnableB 的 Runnable 它可以执行其他操作 有没有办法可以将这两个 Runnable 组合起来 以便它们在同一个线程中运
  • Ironpython:函数在 CPython 中工作,IronPython 中神秘的空指针异常

    我正在尝试做一些看起来非常简单的事情 并且属于标准 python 的范围 以下函数接受集合的集合 并返回两个或多个集合中包含的所有项目 为此 虽然集合的集合不为空 但它只是从集合中弹出一个集合 将其与其余集合相交 并更新落在这些交集之一中的
  • 在 React 中测试 mapbox-gl 时如何修复“window.URL.createObjectURL 不是函数”?

    我正在使用 Mapbox material ui 和自定义样式测试 React 组件 我使用 Jest Enzyme 进行测试 我有问题 window URL createObjectURL 不是函数 我读过类似的问题 github com
  • 如何自定义引导侧边栏/sidenav?

    I need to make use of Twitter Bootstrap Sidebar for creating a menu in my web application Highlighted in red To create a
  • 隐藏键盘ios [重复]

    这个问题在这里已经有答案了 我有一些文本输入 每当我触摸背景时 我都可以隐藏键盘 但只有当我输入第一个文本框名称 textField1 时 现在这段代码应该很简单 但我似乎无法理解它 IBAction backgroundTouched i
  • 如何在Python中将词云保存为.png?

    我正在尝试基于字符串创建词云 然后将其导入到报告文档中 我正在使用 python docx matplotlib 和词云 这是我的一个简短的总结 from wordcloud import WordCloud import matplotl
  • 获取 Flask 中的当前用户 ID

    我对 Python 还很陌生 老实说 我对一般编程也很陌生 我目前正在制定一种待办事项列表 我需要它将待办事项放入适当的课程中 所有这些都与教育内容相关 所以 问题很简单 我将其作为 Flask 驱动的路线 app route add co
  • 方案单词列表 eq?

    我有一个问题 我需要查找列表是否等于第二个列表 例如 set eq 1 2 3 1 2 3 gt t set eq 1 2 3 2 3 4 gt f 这些例子在我的程序中是正确的 但这个例子不是 set eq quote quote one
  • 如何使用GridView从服务器获取JSON数据--Flutter

    我参考过食谱 https flutter dev docs cookbook networking fetch data https flutter dev docs cookbook networking fetch data 示例代码是
  • VueJS 自定义 Props 验证功能

    我是 VueJS 的新手 所以我一直在关注他们的官方指南 https v2 vuejs org v2 guide components html Prop Validation 我能够触发前 5 个属性验证器 但我似乎无法触发最后一个示例
  • 在 Firefox 中读取多行内容可编辑文本

    让我们读取一个 contenteditable 元素 span This is editable br Yes it is span 就在您在文本末尾手动添加两个空格之后 I get textContent gt This is edita
  • C++ 中的“new”运算符何时调用构造函数

    自从我开始学习 C 以来 我一直读到 new 运算符在返回指向分配内存的指针之前调用对象的构造函数 因此 出于好奇 我检查了 new 的源代码 并在以下位置找到了以下内容 GLIBCXX WEAK DEFINITION void opera
  • 使用一组字符而不是一个字符的序列对齐算法

    Summary 我从一些有关对齐算法的细节开始 最后我提出了我的问题 如果您了解对齐算法 请从头开始 考虑我们有两个字符串 例如 ACCGAATCGA ACCGGTATTAAC 有一些算法 例如 史密斯 沃特曼 https en wikip
  • R 绘图自定义数据格式变体

    我正在尝试访问customdata通过javascrit分配给每个数据点 例如为每个点分配一个超链接 然而 我注意到数据格式从一个图变为另一个图 这看起来很奇怪 这在本例中完美运行 基于this https stackoverflow co