#' DiNetplot
#'
#' Displays an interactive network plot.
#' @param cgNetwork_list list of igraph objects, generated by cgNetwork().
#' @examples
#' example.file <- system.file("extdata", "example.RData", package="cgNetwork")
#' load(example.file)
#' DiNetplot(cgNetwork_list)
#' @export
#' @import dplyr shiny visNetwork
#' @importFrom magrittr "%>%"
#' @importFrom igraph V get.data.frame cluster_louvain membership
DiNetplot <- function(cgNetwork_list){
ui <- shiny::fluidPage(
shiny::fluidRow(
shiny::column(6,
visNetwork::visNetworkOutput('vis1')),
shiny::column(6,
visNetwork::visNetworkOutput('vis2'))
)
)
server <- function(input, output) {
g1 <- cgNetwork_list[[1]]
nodes1 <- data.frame(V(g1)$name, label=NA)
colnames(nodes1) <- c("id", "label")
nodes1$label <- nodes1$id
g2 <- cgNetwork_list[[2]]
nodes2 <- data.frame(V(g2)$name, label=NA)
colnames(nodes2) <- c("id", "label")
nodes2$label <- nodes2$id
#Edges
edges1 <- get.data.frame(g1)
colnames(edges1) <- c("from", "to", "width")
edges2 <- get.data.frame(g2)
colnames(edges2) <- c("from", "to", "width")
#Clustering
cluster1 <- cluster_louvain(g1)
cluster_df1 <- data.frame(as.list(membership(cluster1)))
cluster_df1 <- as.data.frame(t(cluster_df1))
cluster_df1$label <- rownames(cluster_df1)
cluster2 <- cluster_louvain(g2)
cluster_df2 <- data.frame(as.list(membership(cluster2)))
cluster_df2 <- as.data.frame(t(cluster_df2))
cluster_df2$label <- rownames(cluster_df2)
#Create group column
nodes1 <- left_join(nodes1, cluster_df1, by = "label")
colnames(nodes1)[3] <- "group"
nodes2 <- left_join(nodes2, cluster_df2, by = "label")
colnames(nodes2)[3] <- "group"
output$vis1 <- visNetwork::renderVisNetwork(
{
visNetwork::visNetwork(nodes1, edges1, main = paste("Network in wild type"), width = "100%") %>%
visNetwork::visIgraphLayout() %>%
visNetwork::visNodes(
shape = "dot",
color = list(
background = "#0085AF",
border = "#013848",
highlight = "#FF8000"
),
shadow = list(enabled = TRUE, size = 10)
) %>%
visNetwork::visEdges(
shadow = FALSE,
color = list(color = "#0085AF", highlight = "#C62F4B")
) %>%
visNetwork::visOptions(highlightNearest = list(enabled = T, degree = 1, hover = T),
selectedBy = "group") %>%
visNetwork::visLayout(randomSeed = 11) %>%
return
})
output$vis2 <- visNetwork::renderVisNetwork(
{
visNetwork::visNetwork(nodes2, edges2, main = paste("Network in mutation"), width = "100%") %>%
visNetwork::visIgraphLayout() %>%
visNetwork::visNodes(
shape = "dot",
color = list(
background = "#0085AF",
border = "#013848",
highlight = "#FF8000"
),
shadow = list(enabled = TRUE, size = 10)
) %>%
visNetwork::visEdges(
shadow = FALSE,
color = list(color = "#0085AF", highlight = "#C62F4B")
) %>%
visNetwork::visOptions(highlightNearest = list(enabled = T, degree = 1, hover = T),
selectedBy = "group") %>%
visNetwork::visLayout(randomSeed = 11) %>%
return
})
}
return(shiny::shinyApp(ui = ui, server = server))
}
DiNetplot(cgNetwork_list)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.