在InteractiveComplexHeatmap,我们主要使用的组合InteractiveComplexHeatmapOutput ()
而且makeInteractiveComplexHeatmap ()
在Shiny应用程序中创建交互式热图小部件。交互式小部件包含许多用于操作热图的工具。然而,有时用户可能想要构建自己的交互式热图小部件,例如定义自己的逻辑来响应热图上的点击或刷屏事件,而不使用InteractiveComplexHeatmap.他们只想要从热图中选择的热图单元格的信息。
InteractiveComplexHeatmap还提供直接返回从热图中选择的行和列信息的低级函数。我将在下一个例子中演示这种用法用户界面
而且服务器
定义如下:
ui =fluidPage(…,plotOutput(“热图”,单击=“heatmap_click”))服务器=函数(输入,输出,会话){ht_obj =reactiveVal(零)ht_pos_obj =reactiveVal(零)输出$热图=renderPlot({...ht =画(的热图(垫))ht_pos =htPositionsOnDevice(ht)ht_obj(ht)ht_pos_obj(ht_pos)})observeEvent(输入$heatmap_click, {pos =getPositionFromClick(输入$heatmap_click)df =selectPosition(ht_obj(pos)马克=假,ht_pos =ht_pos_obj(),verbose =假)#使用' df '做一些事情...})}
有两点需要注意。
画()
而且htPositionsOnDevice ()
应该总是一起执行并放在里面吗renderPlot ()
这样可以正确计算出所有热图切片的位置。getPositionFromClick ()
要检索热图上点击的位置,则可以将位置发送到selectPosition ()
对应于原来的矩阵。同样的,getPositionFromBrush ()
而且selectArea ()
合作检索矩阵中与热图中所选区域对应的行和列。的变量df
包含所选单元格的行索引和列索引(检查的帮助页selectPosition ()
而且selectArea ()
的格式df
).有了这些信息,就可以从头开始实现交互式热图小部件。
htShinyExample (5.8)
演示了一个示例,其中热图的交互性仅使用来自的函数实现闪亮的.在这个例子中,主热图显示了一个2D密度分布,刷热图会触发一个新的2D密度估计,但只对选定的数据子集进行估计。生成这个示例的源代码也包含在这个web应用程序中。