我有一个图表来绘制点,文本和边,以在png
中导出.以下是当前的代码.
node <- data.frame(id=c(1,2,3), x=c(1,2,1), y=c(1,1,2), label=c("a","b","c"))
edge <- data.frame(from=c(1,1,2), to=c(2,3,3))
g <- graph_from_data_frame(d=edge, vertices=node, directed=F)
cor <- matrix(c(V(g)$x, y=V(g)$y), ncol=2)
p <- g %>% ggraph(layout=cor) +
## Base settings
geom_edge_link(width=3, color="gray70") +
geom_node_point(size=22, aes(x=x, y=y)) +
geom_node_text(size=16, color="white", fontface=2, vjust=0.4, aes(x=x, y=y, label=label)) +
## Set axis
expand_limits(x=1, y=1) +
coord_fixed() +
## Set legend
scale_color_manual(name=tname, labels=plabel, values=pname) +
## Theme
theme(
## Font size
plot.title=element_blank(),
axis.title.y=element_blank(),
axis.title.x.top=element_blank(),
axis.text=element_blank(),
legend.title=element_blank(),
legend.text=element_blank(),
legend.position="none",
## Appearance
panel.background=element_rect(fill="transparent"),
panel.grid.major=element_blank(),
legend.key=element_blank()
)
ggsave(p, file="test.png", width=5, height=5, dpi=100)
它会生成以下图像. node 和文本被截断,因此我将width
和height
更改为较大的值ggsave
,以使其适合绘图区域.但 node 尺寸变小了.
由于我需要在有限的空间内将大量图形放入文档中,因此我不想使 node 和文本的大小变小.此外,它可能不适合以二次方式更改expand_limits(x=1, y=1)
的值,因为我需要在固定和有限的大小内将图形导出为尽可能大的图像(在本例中,‘Width=5,Height=5’).
有什么方法或参数可以在绘图区内绘制 node 和文本吗?我在theme()
模式下try 了margin()
模式,但它可以设置图块区域之外的行进模式.