graphTweets 4.0 has been redisigned to work hand-in-hand with
rtweet. Let’s start by getting some tweets. If you’re unsure how to get started, head over to the rtweet website, everything is very well explained. We’ll get 1,000 tweets on #rstats, exluding re-tweets.
Now we can start using
gt_graphor collect results with
If you do not want to return an
igraph object, use
gt_collect, it will return a list of two data.frames; edges and nodes.
(It also returns
nodes but it’s empty since we only ran
So far we only used
gt_edges to extract the edges, we can also extract the nodes.
tweets %>% gt_edges(screen_name, mentions_screen_name) %>% gt_nodes() %>% gt_collect() -> graph lapply(graph, nrow) # number of edges and nodes #> $edges #>  296 #> #> $nodes #>  337 lapply(graph, names) # names of data.frames returned #> $edges #>  "source" "target" "n" #> #> $nodes #>  "nodes" "type" "n"
gt_nodes returns the number of edges the node is present in:
n_edges. Here I used
gt_collect, you can, again, use
gt_graph if you want to return an
Adding nodes has not bring much to table however,
gt_nodes takes another argument,
meta, which if set to
TRUE will return meta data on each node, where availbale*.
Note that you can also pass meta-data to edges if needed.
Before we plot out graph, we’re going to modify some of the meta-data, a lot of
NA are returned (where the meta-data was not available *).
Here I use sigmajs to plot the graph.
library(dplyr) library(sigmajs) # for plots tweets %>% gt_edges(screen_name, mentions_screen_name) %>% gt_nodes() %>% gt_collect() -> gt nodes <- gt$nodes %>% mutate( id = nodes, label = nodes, size = n, color = "#1967be" ) edges <- gt$edges %>% mutate( id = 1:n() ) sigmajs() %>% sg_force_start() %>% sg_nodes(nodes, id, label, size, color) %>% sg_edges(edges, id, source, target) %>% sg_force_stop(10000)
Let’s look at communities, we’ll return an
igraph object with
gt_graph so we can easily run a community finding algorithm from the
You can also build networks of retweets.
net <- tweets %>% gt_edges(screen_name, retweet_screen_name) %>% gt_nodes() %>% gt_collect() c(edges, nodes) %<-% net edges$id <- 1:nrow(edges) edges$size <- edges$n nodes$id <- nodes$nodes nodes$label <- nodes$nodes nodes$size <- nodes$n sigmajs() %>% sg_nodes(nodes, id, size, label) %>% sg_edges(edges, id, source, target) %>% sg_layout() %>% sg_cluster() %>% sg_settings( edgeColor = "default", defaultEdgeColor = "#d3d3d3" ) %>% sg_neighbours()
* Some nodes are mentioned in tweets only and therefore have no meta-data associated.