Search code examples
htmlrr-markdownvisnetwork

Why is the layout of a graph from visnetwork in html too small


When I render the example-Rmd below, it looks like this (with Chrome, not really a difference to Firefox):

enter image description here

The figure is way too small and if I look at the "real" graphs I need, the height is too small and the ratio height-width is even worse.

Here is a reproducible example:

---
title: "Untitled"
author: "author"
date: "9 Mai 2018"
output: html_document
---

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

## Example

Here is a line of text...................................................................................................................................................................................................................................................................

```{r echo=FALSE}
require(visNetwork, quietly = TRUE)
# minimal example
nodes <- data.frame(id = 1:20)
edges <- data.frame(from = sample(c(1:20), 10), to = sample(c(1:20), 10))
visNetwork(nodes, edges, width = "100%", height = "100%") %>%
                               visNodes() %>%
                               visOptions(highlightNearest = TRUE) %>%
                               visInteraction(navigationButtons = TRUE, 
                                              dragNodes = FALSE,
                                              dragView = FALSE, zoomView = FALSE) %>%
                               visEdges(arrows = 'to')
```

Here is another line of text....................................................................................................................................................................................................................................................................

Solution

  • I expected to fix it using some chunk options, such as out.height or fig.height but for some reason they don't.

    However you can set a fixed height for the widget itself, simply passing a number to the height argument that will be interpreted as pixels:

    ```{r echo=FALSE}
    require(visNetwork, quietly = TRUE)
    # minimal example
    nodes <- data.frame(id = 1:20)
    edges <- data.frame(from = sample(c(1:20), 10), to = sample(c(1:20), 10))
    visNetwork(nodes, edges, width = "100%", height = 700) %>%
                                   visNodes() %>%
                                   visOptions(highlightNearest = TRUE) %>%
                                   visInteraction(navigationButtons = TRUE, 
                                                  dragNodes = FALSE,
                                                  dragView = FALSE, zoomView = FALSE) %>%
                                   visEdges(arrows = 'to')
    ```
    

    enter image description here