标签: htmlwidgets

R timevis 中的子组

利用优秀的 R timevis 包中的分组功能有很好的记录,并且在 timevis::timevis() 的帮助页面中提供了示例。

该文档还说可以定义子组,其中

“按子组将组内的所有项目分组,并将它们放置在相同的高度,而不是将它们堆叠在一起。”

我无法理解如何使用此功能。例如,在下面的示例中,我希望“事件 1”和“事件 2”被定义为它们自己的子组,因此它们将位于相同的高度。然而,这种情况并非如此。

timedata <- data.frame(
  id = 1:6, 
  start = Sys.Date() + c(1, - 10, 4, 20, -10, 10),
  end = c(rep(as.Date(NA), 4), Sys.Date(), Sys.Date() + 20),
  group = c(1,1,1,2,2,2),
  content = c("event 1", "event 2", "event 2", "event 1", "range 1",     "range 1"),
  subgroup = c("1.1", "1.2", "1.2", "2.1", "2.2", "2.2")
)

groups <- data.frame(id = c(1,2), content = c("g1", "g2"))
timevis::timevis(data =timedata, groups = groups)
Run Code Online (Sandbox Code Playgroud)

示例代码的结果。子组定义不成功

如何正确利用子组功能?

r htmlwidgets

4
推荐指数
1
解决办法
1943
查看次数

在R中使用forceNetwork变得疯狂:没有显示边缘

我一直试图在R中使用networkD3包绘制网络一周.该simpleNetwork功能正常工作,但它不能很好地控制图形的外观.该forceNetwork功能就是为了这个目的:显示具有丰富视觉特征的图形.

我遇到的问题几乎与问题相同.我仔细阅读了包文档,并尝试了上述线程中提出的解决方案,没有运气:我得到的是一个没有边连接它们的节点云.

我的data.frames:

EDG

Gene1 Gene2 Prob
  1    22    3
  2    22    6
  3    22    6
  4    22    9
  5    22    3
  6    22    4
  7    22    8
  8    22    4
  9    22    6
 10    22    8
 11    22    6
 12    22   10
 13    22    6
 14    22    3
 15    22    6
 16    22    6
 17    22    0
 18    22    4
 19    22    6
 20    22    4
Run Code Online (Sandbox Code Playgroud)

VERT

Symbol Chr …
Run Code Online (Sandbox Code Playgroud)

plot r networkd3 htmlwidgets

3
推荐指数
1
解决办法
2536
查看次数

动态循环 htmlwidgets 并为 RMarkdown 添加 knit 格式

我正在尝试动态创建和循环,htmlwidgets例如DTplotly、 或rbokeh生成自动针织报告。有没有办法将knitr格式(例如 )添加到此 github 问题https://github.com/ramnathv/htmlwidgets/pull/110tabset中概述的方法中?我也在那里发布了这个问题。tagList

下面是我的想法的一些示例代码,但它不太有效。我想做的是创建 10 个选项卡,每个选项卡都有一个从plot_list. 现在发生的事情是所有绘图都进入最后一个选项卡。在实践中,plot_list会有不同的图/表。

#' ---
#' title: htmltools::tagList test
#' output:
#'    html_document
#' ---

#' # {.tabset}
#+ results='asis', echo=FALSE
library(plotly)
library(printr)

plot_list = lapply(1:10, 
                   function(i){ 
                     as.widget(plot_ly(iris, 
                                       x = iris[["Sepal.Length"]],
                                       y = iris[["Sepal.Width"]], 
                                       mode = "markers")) 
                    } 
                  )

htmltools::tagList( lapply(1:10, 
                            function(i) {
                              pandoc.header(paste0("Tab",i,' {.tabset}'), 2)
                              plot_list[[i]]
                            } 
                          )
                   )

# rmarkdown::render("your_path/htmltoolsTagList_test.r")
Run Code Online (Sandbox Code Playgroud)

之前,我使用嵌套 for 循环成功地完成了类似的操作,但是一旦我尝试使用具有 HTML …

r knitr r-markdown htmlwidgets

3
推荐指数
1
解决办法
2621
查看次数

RadialNetwork() 的 R networkD3 颜色节点描边

networkd3包包含非常好的函数来创建明显的网络。不同的函数有不同的参数,因此这个问题专门针对 RadialNetwork() 函数。是否可以根据给定的向量改变节点笔划的颜色?

下面的代码创建了一个网络图,但将节点描边的参数更改为包含不同颜色的向量不起作用。

library(networkD3)
library(tidyverse)
library(data.tree)

## Data
input <- list(number=50)
Data_tree <- data.frame(Start="Class",
                      Asset = sample(c("FI","Equity","Currency","Commodities"),input$number,replace = TRUE),
                      Sub_Asset = sample(c("Asia","Europe","USA","Africa","ME"),input$number,replace = TRUE),
                      Ticker = replicate(input$number,paste0(sample(LETTERS,3),collapse=""))) %>% 
unite(col="pathString",Start,Asset,Sub_Asset,Ticker,sep="-",remove=FALSE) %>%
select(-Start) %>% as.Node(pathDelimiter = "-")



radialNetwork(ToListExplicit(Data_tree, unname = TRUE ), 
           linkColour = "#ccc",
           nodeColour = "#fff",
           nodeStroke = "orange",
           textColour = "#cccccc")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r networkd3 htmlwidgets

3
推荐指数
1
解决办法
1270
查看次数

条件格式 DT 中的样式

我想根据 B 列中的值对 A 列中的行进行着色。

下面的代码基于 vignette Link中的示例,但仅显示两列的条件:mobile_number 和 mobile_flag。

数据:

head(test[, c("EMBG","mobile_number", "home_number",  "mobile_flag", "home_number_flag")])
          EMBG mobile_number      home_number mobile_flag
1 101001455126   075-201-543      02/2446-275     correct
2 101010455015   55555555555      55555555555   incorrect
3 101014455095             0                0   incorrect
4 101947455134   075/482-356      02/2460-020     correct
5 101952450264  070 22 16 18 ----------------     correct
6 101953450012             0      02/2446-276   incorrect
  home_number_flag
1          correct
2        incorrect
3        incorrect
4          correct
5        incorrect
6          correct
Run Code Online (Sandbox Code Playgroud)

我的DT表:

> datatable(test) %>% formatStyle(
+   'mobile_number', 'mobile_flag',
+   backgroundColor = styleEqual(c("correct", "incorrect"), …
Run Code Online (Sandbox Code Playgroud)

r dt htmlwidgets

3
推荐指数
1
解决办法
6490
查看次数

R:为networkD3绘图添加标题并保存

我有兴趣为使用NetworkD3创建的forceNetwork图表添加标题,并使用magrittr导出html.

R:HTML Tag Object帮助页面中找到了一个解决方案,以便添加标题.然后我被指示browsable()"更改networkD3情节的背景颜色" StackOverflow问题中添加htmltool 参数- 来自@timelyportfolio的回答.

下面我提供了一个最小的工作示例,用于添加标题,然后保存没有标题的网络,最后我的非工作尝试将两者结合起来.

library(networkD3)
library(htmltools)

# Load data
data(MisLinks)
data(MisNodes)

# Plot with title in R Viewer
browsable(
  tagList(
    tags$h1("Title"),
      forceNetwork(Links = MisLinks, Nodes = MisNodes,
                   Source = "source", Target = "target",
                   Value = "value", NodeID = "name",
                   Group = "group", opacity = 0.8)
  )
)
Run Code Online (Sandbox Code Playgroud)

虽然我可以使用magrittr保存没有标题%>%:

library(magrittr)

# Plot and save to Mis.html
forceNetwork(Links = MisLinks, Nodes = MisNodes,
                 Source = "source", Target = "target", …
Run Code Online (Sandbox Code Playgroud)

r d3.js networkd3 htmlwidgets htmltools

3
推荐指数
1
解决办法
1748
查看次数

使用 htmlwidget 将交互式绘图保存到路径

我正在尝试将一些交互式图形保存到额外的文件中。这与htmlwidget::saveWidget. 但我将它们保存到不同的文件夹中时遇到问题,例如保存到结果文件夹中。

results_dir <- 'results'
if(!dir.exists(results_dir)) dir.create(results_dir)
p <- plotly::plot_ly(economics, x = ~date, y = ~pop, 
             type = 'scatter', mode = 'markers')
htmlwidgets::saveWidget(p, 
                        file.path(results_dir, 'VSGs.html'))
Run Code Online (Sandbox Code Playgroud)

错误信息是:

NormalizePath(basepath, "/", TRUE) 中的错误:
path[1]="results":没有这样的文件或目录

有人知道发生了什么事吗?

我知道之后只是移动文件,但我更希望解决此错误消息。

htmlwidgets::saveWidget(p, 'VSGs.html')
file.rename('VSGs.html', file.path(results_dir, 'VSGs.html'))
Run Code Online (Sandbox Code Playgroud)

r plotly htmlwidgets

3
推荐指数
1
解决办法
3829
查看次数

networkD3 Sankey 图 - 控制节点位置

我希望在 R Markdown 中使用 HTML 小部件/Javascript 创建交互式桑基图,因此我正在考虑使用networkD3 包。我希望利用的主要交互性是单击节点,以使从节点发出的路径向用户突出显示。

我之前使用Riverplot 包创建了静态桑基图,您可以在其中指定每列节点的相对位置以及该列中节点的顺序。

回到networkD3产品,我不确定是否可以以相同、简单的方式控制相对节点位置(垂直和水平)。我发现了一些似乎与我的要求相关的帖子,但我不清楚哪些(如果有)已经在包中实现,以及“愿望清单”上有哪些

我找到的帖子是:nodesort固定节点序列浏览器

所以,我的问题是是否有人可以就最好的 R 包或技术提供建议,以便创建一个基于交互式 HTML 小部件的桑基图,并具有初始(相对)节点位置控制?

r r-markdown sankey-diagram networkd3 htmlwidgets

3
推荐指数
1
解决办法
2907
查看次数

R传单情节船方向

我有关于船只/船只的位置以及它们所转向的路线的信息。我想将它们绘制在带有看起来像船的自定义图标的传单地图上。我发现"tags"图标 fromglyphicons是最合适的。这里有一些数据可以玩:

dput(head(x))
structure(list(boatName = c("Conti Benguela", "Sunny Bay", "Sunny Horizon", 
"FMT URLA", "Qi Xiang 22", "STI Solidarity"), lat = c(37.115365, 
38.4772017, 14.632, 56.80515, 51.31172, -2.2783283), lon = c(15.2682183, 
-8.7888783, -79.5806667, 7.601885, -143.5678933, 46.6328383), 
    cog = c("16", "331", "182", "21", "288", "72")), row.names = c(NA, 
6L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

cog指示地面上的路线,图标转换为旋转角度。我正在使用以下代码当前绘制船只的位置和根据船只转向的路线旋转:

shipIcon <- makeAwesomeIcon("tag",iconRotate = x$cog)
leaflet() %>% addTiles() %>% 
  addAwesomeMarkers(lng=x$lon,lat=x$lat,icon=shipIcon,popup = x$boatName)
Run Code Online (Sandbox Code Playgroud)

但是,如您所见,makeAwesomeIcon为我不想要的图标添加了一个背景标记。我已经看过thisthis,后者正是我想要做的。我怎样才能完成我的任务,即根据它在没有标记背景的情况下转向的路线显示带有旋转的自定义船舶图标?

r leaflet htmlwidgets htmltools

3
推荐指数
1
解决办法
1764
查看次数

如何在 Sankey 图表 networkD3 中添加列标题

我正在制作一个 Sankey 图表,我想在每列的顶部添加文本,以便简要说明所显示的内容。来自 r-graph galery 的示例代码:

library(networkD3)

# A connection data frame is a list of flows with intensity for each flow
links <- data.frame(
  source=c("group_A","group_A", "group_B", "group_C", "group_C", "group_E"), 
  target=c("group_C","group_D", "group_E", "group_F", "group_G", "group_H"), 
  value=c(2,3, 2, 3, 1, 3)
)

# From these flows we need to create a node data frame: it lists every entities involved in the flow
nodes <- data.frame(
  name = unique(c(as.character(links$source), as.character(links$target)))
)

# With networkD3, connection must be provided using id, not using …
Run Code Online (Sandbox Code Playgroud)

r d3.js sankey-diagram networkd3 htmlwidgets

3
推荐指数
1
解决办法
382
查看次数

标签 统计

htmlwidgets ×10

r ×10

networkd3 ×5

d3.js ×2

htmltools ×2

r-markdown ×2

sankey-diagram ×2

dt ×1

knitr ×1

leaflet ×1

plot ×1

plotly ×1