如何在R Shiny中创建环形热图?(R环境中已可实现)
在R Shiny中实现环形热图的解决方案
circlize的绘图依赖R基础绘图系统,直接把普通R脚本里的代码搬到Shiny里会失效——因为Shiny需要明确的绘图输出机制来把图形传递到UI界面。以下是适配Shiny的完整实现方案:
完整Shiny代码
library(shiny) library(circlize) ui <- fluidPage( # 指定环形热图的输出区域,可调整宽高适配显示 plotOutput("circularHeatmap", width = "600px", height = "600px") ) server <- function(input, output) { output$circularHeatmap <- renderPlot({ # 必须重置circlize环境,否则多次刷新会出现绘图冲突 circos.clear() # 生成示例数据(替换成你的自定义数据即可) data <- matrix(rnorm(100), ncol = 10) # 设置环形热图参数 circos.par("track.height" = 0.2) # 创建环形热图 chm <- circos.heatmap(data, col = colorRamp2(c(-2, 2), c("blue", "red"))) # 绘制热图区域 circos.trackPlotRegion(chm) }) } shinyApp(ui, server)
关键注意事项
- 每次渲染热图前必须调用
circos.clear():circlize会保留绘图状态,不重置的话多次刷新页面会导致图形重叠、布局混乱。 - 数据传递:如果使用自定义数据集,建议把数据放在reactive对象中,或者直接在
renderPlot()内部读取,避免依赖全局环境变量引发的问题。 - 显示调整:根据需求修改
plotOutput()的width和height参数,让环形图显示比例更协调。
内容的提问来源于stack exchange,提问作者pentro gen
相关产品推荐
相关产品推荐

