标签: htmlwidgets

Sankey Diagram的自有颜色范围,带有NetworkD3包

我试图sankeyNetwork()在networkD3包中使用Sankey图.

sankeyNetwork(Links = Flow_data, Nodes = Nodes_data,
    Source = "Source_ID", Target = "Target",
    Value = "value", NodeID = "Nodes_name",
    width = 1000, height=600, fontsize = 16, nodeWidth = 50,
    colourScale = "d3.scale.category20c()")
Run Code Online (Sandbox Code Playgroud)

可视化效果很好,但我想将颜色范围更改为单个范围.有没有机会改变SankeyNetwork的颜色?我需要一系列只有3种颜色,我可以自己设置(不是d3.scale的预定义colourScales).

r d3.js sankey-diagram networkd3 htmlwidgets

5
推荐指数
1
解决办法
3634
查看次数

Rmarkdown重叠输出

我报告了一个问题https://github.com/rstudio/rmarkdown/issues/967,我想知道是否有解决方法(如何使这项工作)?

在此输入图像描述

下面的可重复示例(改变n和nGroup以查看效果 - 当n = 100且nGroup = 10时不重叠):

---
title: "Test links to sections in DT"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo=FALSE)
knitr::opts_chunk$set(message=FALSE)
knitr::opts_chunk$set(warning=FALSE)

## DT Test

```{r echo=FALSE}
library(DT)

n <- 1000
nGroup <- 100

testDF <- data.frame(text=paste0("Section", 1:n),
                     number=1:n,
                     group=rep(1:(n/nGroup), n/nGroup))

datatable(head(testDF), caption="Whole table", rownames=FALSE, escape=FALSE, options=list(paging=FALSE, info=FALSE))

getDT<-function(x) {
  a <- list()
  a[[1]] <- htmltools::tags$h3("test1")
  a[[2]] <- datatable(x[, c("text", "number")], caption=htmltools::tags$caption(style="caption-side: top; text-align: left;", "Group: ", htmltools::strong(x$group)), rownames=FALSE, escape=FALSE, filter=c("none"), options=list(paging=FALSE, info=FALSE))
  a[[3]] <- …
Run Code Online (Sandbox Code Playgroud)

r r-markdown dt htmlwidgets

5
推荐指数
1
解决办法
781
查看次数

在JavaScript中检索R对象属性

我有一个包含100个观测值的双变量数据集.我使用了六边形装箱,结果是26个六边形箱.为了保存26个六边形箱中每个的100个观测值的行,我使用了base::attrR中的函数.在下面的代码中,这是在以下位置完成的:

attr(hexdf, "cID") <- h@cID
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建Plotly六边形分箱的交互式R 对象,以便如果用户点击给定的六边形分区,它们将获得分组到该分区中的100个观察的行.我完成了这个目标的一部分.我的MWE如下:

library(plotly)
library(data.table)
library(GGally)
library(hexbin)
library(htmlwidgets)

set.seed(1)
bindata <- data.frame(ID = paste0("ID",1:100), A=rnorm(100), B=rnorm(100))
bindata$ID <- as.character(bindata$ID)

x = bindata[,c("A")]
y = bindata[,c("B")]
h <- hexbin(x=x, y=y, xbins=5, shape=1, IDs=TRUE)
hexdf <- data.frame (hcell2xy (h),  hexID = h@cell, counts = h@count)
attr(hexdf, "cID") <- h@cID
pS <- ggplot(hexdf, aes(x=x, y=y, fill = counts, hexID=hexID)) + geom_hex(stat="identity")

ggPS <- ggplotly(pS)

myLength <- length(ggPS[["x"]][["data"]])
for (i in 1:myLength){
  item =ggPS[["x"]][["data"]][[i]]$text[1]
  if (!is.null(item)) …
Run Code Online (Sandbox Code Playgroud)

javascript r onrender plotly htmlwidgets

5
推荐指数
1
解决办法
126
查看次数

R中的Sankey图与networkD3 - 行号问题

sankey图

我想重点关注上面的流程,将蓝色的"热量发电"块连接到粉红色的"电网"块.你会注意到流量是526 TWh,这是#62行Energy$links.

Energy$links
   source target   value
...
62     26     15 525.531
...
Run Code Online (Sandbox Code Playgroud)

现在让我们关注引用节点的sourcetargetEnergy$nodes.

Energy$nodes
                             name
...
15        Heating and cooling - homes
16                   Electricity grid
...
26                       Gas reserves
27                 Thermal generation
...
Run Code Online (Sandbox Code Playgroud)

source当它实际引用节点数据的行"27"时,该值为"26".当实际引用节点数据的行"16"时,目标值为"15".为什么链接数据中的源和目标值实际上是指节点数据中的行 x-1而不是x?除了在构建这些Sankey图时在我头脑中执行x - 1计算时,还有什么方法吗?

这是完整的Energy数据:

> Energy
$`nodes`
                                 name
1                Agricultural 'waste'
2                      Bio-conversion
3                              Liquid
4                              Losses
5                               Solid
6                                 Gas
7                     Biofuel imports
8                     Biomass imports
9 …
Run Code Online (Sandbox Code Playgroud)

r sankey-diagram networkd3 htmlwidgets

5
推荐指数
1
解决办法
243
查看次数

单击传单标记将您带到URL

在R的宣传资料包中,是否可以点击标记并定向到URL?*

JS中这似乎是可能的。


添加带有URL的独立弹出窗口很容易:

library(leaflet)
content <- paste(sep = "<br/>",
                 "<b><a href='http://www.samurainoodle.com'>Samurai Noodle</a></b>"
)

leaflet() %>% addTiles() %>%
  addPopups(-122.327298, 47.597131,  content,
             options = popupOptions(closeButton = FALSE)
  )
Run Code Online (Sandbox Code Playgroud)

添加标记时也很简单,当单击该标记时,将在弹出窗口中提供一个URL:

leaflet() %>% addTiles() %>%
  addMarkers(-122.327298, 47.597131, popup =  content,
            options = popupOptions(closeButton = FALSE)
  )
Run Code Online (Sandbox Code Playgroud)

也许有一些习惯传递给传单了...吗?


最后,自定义JS函数如何为每个地图标记显示不同的URL?考虑示例data.frame:

df <- data.frame(url = c("/sf/ask/tagged/python/",
                         "/sf/ask/tagged/r/")),
                 lng = c(-122.327298, -122.337298),
                 lat = c(47.597131,47.587131))
Run Code Online (Sandbox Code Playgroud)

* 之前曾有人问过这个问题,但我在这里再问一个问题,并举一个最小的,可复制的例子。

javascript r leaflet htmlwidgets htmltools

5
推荐指数
1
解决办法
202
查看次数

R:将 rgl 小部件组合并保存为单个 html 文件

在 R 中,使用rglhtmlwidgets库,我试图提取一个 HTML 文件,其中包含一个带切换按钮的小部件。

以下示例在 RStudio 查看器中执行我想要的操作。HTML 导出在没有切换按钮的情况下工作,但在 rglwidget 包含这些按钮时失败。

第一部分基于这些 rgl 示例,以及htmlwidgets 手册中的导出部分。

library(rgl)

open3d()

x <- sin(1:100)
y <- cos(1:100)
z <- -100:100/100

# draw a barrel
sids1 <- spheres3d(x, y, z, col = rainbow(1000),radius=0.05)
# draw a pole
sids2 <- spheres3d(0, 0, z, col = rainbow(1000),radius=0.05)

# create widgets with toggle buttons
widgets <- rglwidget() %>%
  toggleWidget(ids = sids1, label = "Toggle Barrel") %>%
  toggleWidget(ids = …
Run Code Online (Sandbox Code Playgroud)

r widget togglebutton rgl htmlwidgets

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

如何使散点图点使用 ggplotly 打开超链接 - R

我想让我的散点图点可点击,并在点击时打开每个点各自的超链接。我正在尝试使用 ggplotly 来做到这一点。使用 plotly() 构建绘图时,有一种简单的方法可以做到这一点(参见下面的第一个示例)。但是,在 ggplotly 上运行它时,单击时会打开一个空网页。

任何人都知道我如何使用下面的代码进行这项工作?代码的 OnRender 部分是否有解决方案(不熟悉 javascript)?使用 plotly 的第一个代码块有效。第二个代码块是我使用 ggplotly 的基本尝试,但它不起作用。

任何关于这方面的指导都会很棒!提前致谢

library(plotly)
library(htmlwidgets)
library(dplyr)

#1. Using plotly
mtcars$url <- paste0(
  "http://google.com/#q=", 
  rownames(mtcars))
p <- plot_ly(mtcars, x = ~wt, y = ~mpg) %>%
  add_markers(customdata = ~url)
onRender(p, "
         function(el, x) {
         el.on('plotly_click', function(d) {
         var url = d.points[0].customdata;
         window.open(url);
         });
         }
         ")

#2. Using ggplotly`
p <- ggplot(data = mtcars, aes(x = wt, y = mpg))+
  geom_point()
pp <- ggplotly(p)
pp  <- add_markers(pp, customdata = ~url) …
Run Code Online (Sandbox Code Playgroud)

r shiny htmlwidgets ggplotly r-plotly

4
推荐指数
2
解决办法
1078
查看次数

固定R / networkD3软件包中Sankey流程图的顺序

我想使用Sankey流程图可视化美国各州的等级变化(即相对顺序的变化)。我正在使用软件包,并提出了以下内容:

library(dplyr)
library(networkD3)

df <- data_frame(origins=state.name[1:10], destinations=state.name[1:10])
lab <- c(df$origins, df$destinations)
nodes <- data.frame(node=c(0:9), name=lab)
links <- data.frame(source=c(0:9), target=c(10:19), value=rep(1,10))
sankeyNetwork(Links = links, Nodes = nodes, Source = 'source', 
              Target = 'target', Value = 'value', NodeID = 'name')
Run Code Online (Sandbox Code Playgroud)

此代码段生成以下图形:美国各州的Sankey流程图 在此处输入图片说明

我现在可以手动更改相对顺序。但是,我想知道是否有可能将订单固定在右侧并将阿拉巴马州置于第3级,加利福尼亚州置于第1级,等等...

r data-visualization sankey-diagram networkd3 htmlwidgets

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

R networkD3:单击操作显示节点数据帧的信息

我有这个代码:

library(networkD3)

# Load data
data(MisLinks)
data(MisNodes)

new.nodes <- MisNodes
new.nodes$var1 <- runif(nrow(MisNodes),1,2)
new.nodes$var2 <- runif(nrow(MisNodes),1,2)

# Some script to show the node index in the new.nodes data frame
script <- 'alert("row: " + (d.index + 1));'

# Plot
forceNetwork(Links = MisLinks, Nodes = new.nodes,
             Source = "source", Target = "target",
             Value = "value", NodeID = "name",
             Group = "group", opacity = 0.8,
             clickAction = script)
Run Code Online (Sandbox Code Playgroud)

我想通了通过询问来获取节点数据帧的行号d.index + 1。但是我想显示一个包含所有节点信息的表,如下所示(也许格式更好):

    name group size     var1     var2
1 Myriel     1   15 …
Run Code Online (Sandbox Code Playgroud)

javascript networking r networkd3 htmlwidgets

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

在闪亮中使用 includeHTML 显示 html 文件不适用于 renderUI()

我有一个保存的 html 小部件(来自传单),我想在闪亮的应用程序中显示它。

usingincludeHTML()在 ui.R 中给出时有效,但在使用 动态调用时无效renderUI()。我有很多 .html 文件,我希望用户通过选择输入进行选择,所以我需要一个动态解决方案。

这篇流行文章在 Shiny App 中显示 HTML 文件的接受答案有一个动态解决方案,但它对我不起作用。没有给出错误,也没有渲染任何内容。

总之:

作品

ui <- fluidPage(
  includeHTML("foo.html")
)
Run Code Online (Sandbox Code Playgroud)

不起作用

ui <- fluidPage(
  htmlOutput("map")
)

server <- function(input,output){
  output$map <- renderUI({
     includeHTML(path = "foo.html")
   })
}
Run Code Online (Sandbox Code Playgroud)

这个帖子也有相关,但是没找到解决办法。

leaflet shiny htmlwidgets

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