es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Representar una imagen de trama como un punto en un gráfico de red utilizando ggplot2 en R.

Quiero utilizar una imagen de delfín como forma de los nodos en mi gráfico de red usando ggplot2. Ya he leído la imagen; sin embargo, no puedo convertirla en el tipo de forma para usarla en geom_nodes. ¿Alguien sabe cómo trazar la imagen como un punto en mi código, por favor?

library(“ggimage”)
library(‘png’)
img.1 <- readPNG(“dolphin.png”)

library(network)
nodes <- read.csv(file=’dolphinnodes.csv’)
nodes
edges <- read.csv(file=’dolphinedges.csv’)
edges
net <- network(x=edges, vertices=nodes, directed = FALSE)
net
library(ggnetwork)
n <- ggnetwork(net)
library(ggplot2)
network <- ggplot(n, aes(x=x,y=y,
xend=xend, yend=yend, )) + theme_void() +
geom_image(aes(image=img.1), size=0.05) +
geom_nodes(aes(size=group, color = group), shape = “square”) +
geom_edges(color = “grey70”) +
geom_edge_text(aes(label = group), color = “white”, fill = “grey25”) +
theme_minimal() +
theme(axis.text = element_blank(),
axis.title = element_blank(),
panel.background = element_rect(fill = “grey25”),
panel.grid = element_blank())
network

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Puedes trazar la imagen como un punto en tu código usando la biblioteca ggimage. Primero, lee la imagen en R usando la función readPNG:

    library("ggimage")
    library('png')
    img.1 <- readPNG("dolphin.png")
    

    Luego, lee los datos de nodos y bordes de los archivos CSV:

    library(network)
    nodes <- read.csv(file='dolphin_nodes.csv')
    nodes
    edges <- read.csv(file='dolphin_edges.csv')
    edges
    net <- network(x=edges, vertices=nodes, directed = FALSE)
    net
    

    A continuación, usa la biblioteca ggnetwork para crear un gráfico de red:

    library(ggnetwork)
    n <- ggnetwork(net)
    

    Por último, usa la biblioteca ggplot2 para trazar el gráfico, y usa la función geom_nodes para especificar la forma de los nodos como la imagen del delfín:

    library(ggplot2)
    network <- ggplot(n, aes(x=x,y=y,
                             xend=xend, yend=yend, )) + theme_void() +
               geom_nodes(aes(size=group, color = group), shape = img.1) +
               geom_edges(color = "grey70") +
               geom_edgetext(aes(label = group), color = "white", fill = "grey25") +
               theme_minimal() +
               theme(axis.text = element_blank(),
                     axis.title = element_blank(),
                     panel.background = element_rect(fill = "grey25"),
                     panel.grid = element_blank()) 
    network
    

    El gráfico resultante debería verse así:

    graph

Comments are closed.