我一直在使用R的一个名为‘aweSOM’的图书馆.它是一个基于为自组织 map (SOM)提供HTML交互视觉效果的库.

aweSOM产生了一些比类似SOM包更好的视觉效果,所以我会使用它.然而,问题是两个方面的:

  1. 超文本标记语言--交互的视觉效果不适合发布.
  2. 当我另存为PNG时, PNG '悬停在情节上以获取信息."

因此,我想知道是否有可能编写一个函数,使"plot"保存为PNG,但没有上面的交互式文本?

因此,有效地编写一个函数,只保存一个特定大小的正方形,从而省略文本?

感谢您的反馈和帮助.

install.packages("aweSOM")
library(aweSOM)

full.data <- iris
train.data <- full.data[, c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")]
train.data <- scale(train.data)

set.seed(1465)
init <- somInit(train.data, 4, 4)
iris.som <- kohonen::som(train.data, grid = kohonen::somgrid(4, 4, "hexagonal"), 
                         rlen = 100, alpha = c(0.05, 0.01), radius = c(2.65,-2.65), 
                         dist.fcts = "sumofsquares", init = init)

superclust_pam <- cluster::pam(iris.som$codes[[1]], 3)
superclasses_pam <- superclust_pam$clustering

###########
#PROBLEMATIC PLOT WITH INTERACTIVE TEXT
##########

plot <- aweSOMplot(som = iris.som, type = "Cloud", data = full.data, 
           variables = c("Species", "Sepal.Length", "Sepal.Width",  
                         "Petal.Length", "Petal.Width"), 
           superclass = superclasses_pam)

所有的帮助将被感激与修复可视化.这里有一个小插曲:

https://cran.r-project.org/web/packages/aweSOM/vignettes/aweSOM.html#the-awesom-package

enter image description here

推荐答案

如何创建这些标签

如果你看一下aweSOMplot() R source,你会发现它在实际的图(称为res)之前添加了两个<h4> html标签:

res <- htmlwidgets::prependContent(res, htmltools::tag("h4", list(id= paste0(res$elementId, "-info"))))
res <- htmlwidgets::prependContent(res, htmltools::tag("h4", list(id= paste0(res$elementId, "-message"))))

aweSOMwidget.js source然后增加了相关案文:

document.getElementById(infoId).innerHTML = "Hover over the plot for information.";
document.getElementById(messageId).innerHTML = "-";

如何隐藏标签

创建一个R函数,将一个htmlwidgets::htmlwidget元素设置为不可见:

hide_element  <- function(el) {
  el$attribs$style  <- 'visibility: hidden;'
  el
}

然后将此应用于图中的前置对象:

plot$prepend  <- lapply(plot$prepend, hide_element)

现在,这将根据需要生成一个图:

enter image description here

注意:如果你想把图下面的-也删除,只需将函数应用到附加元素上:

to_hide  <- c("prepend", "append")
plot[to_hide]  <- lapply(plot[to_hide], \(l) lapply(l, hide_element))
# ^^ plot is now as above but without the "-" below it

R相关问答推荐

删除facet_wrap标签之间的水平线

具有多个依赖变量/LHS的逻辑模型

如何使用R对每组变量进行随机化?

在R中使用数据集名称

S用事件解决物质平衡问题

如何计算多个日期是否在一个日期范围内

如何调整曲线图中的y轴标签?

在R中使用Scale_y_Break后更改y轴标签

R -如何分配夜间GPS数据(即跨越午夜的数据)相同的开始日期?

从R中发出的咕噜声中的BUG?

如何使用前缀作为匹配来连接数据帧?

按组内中位数分类

循环遍历多个变量,并将每个变量插入函数R

快速合并R内的值

为什么不能使用lApply在包装函数中调用子集

在同一单元格中创建包含整数和百分比的交叉表

如何更改包中函数中的参数?

如何在R中使用因子行求和?

如何准确地指出Read_delim所面临的问题?

在子图内和子图之间对齐行数不均匀的表格罗布对