节点标签在ggraph和ggsave中被切断

时间:2019-05-28 14:11:04

标签: r ggplot2

当我使用ggraph绘制带有节点标签的网络图时,标签经常被切断。

library(igraph)
library(ggraph)

#generate a sample network 
tstGr <- erdos.renyi.game(6, 0.5, type=c("gnp", "gnm"), directed = TRUE, loops = FALSE)
#Assign labels to the nodes
V(tstGr)$name = c("LongName1", "LongName2", "LongName3", "LongName4", "LongName5", "LongName6")

#Plotting function
PfuncLite = function(Gr){
  p = ggraph(Gr, layout = "circle")+
    geom_edge_fan(color = "#971b2f", alpha = 0.5, arrow = arrow(ends = "last", length = unit(0.15, "inches")), start_cap = circle(6, 'mm'), end_cap = circle(6, 'mm')) + 
    geom_node_label(aes(label = V(Gr)$name), color = "#002f6c") + 
    theme_graph()+
    ggtitle("Interaction Network") 
  return(p)
}

PlotTstGr = PfuncLite(tstGr)
PlotTstGr

如果我在ggsave中更改绘图的宽度,则最终可以得到足够宽的绘图以包含整个标签。

ggsave("TestPlot1.jpg", plot = PlotTstGr)
ggsave("TestPlot2.jpg", plot = PlotTstGr, width = 15)

然后拉伸输出图TestPlot2.jpg。有没有办法防止节点标签被切断?我不能确定问题出在ggraph还是ggplot2中。

1 个答案:

答案 0 :(得分:0)

我知道了这一点,在geom_node_label中,您可以使用repel = T选项

filtering_select_ref.watch('_opened', function()...

这是对ggrepel的调用,因此您可以在那里使用其他选项。我发现point.padding = NA,box.padding = 0,force = 0.1对于将节点保持在原位非常有用,但是只是为了避免它们越过边界运行。