【问题标题】:Export R plot via svg() without zooming将 GGplot 导出到 svg() 而不缩放
【发布时间】:2018-02-14 21:05:06
【问题描述】:

在 R 中,我通过以下代码生成一个包含 100 个节点的大型网络图:

library(igraph)

data<-data.frame(c(1:500))

relations<-data.frame(from=c(sample(1:500,500,replace=T)),to=c(sample(1:500,500,replace=T)))

g<-graph_from_data_frame(d=relations,vertices = data,directed=T)

l<-layout_with_fr(g)

l <- norm_coords(l, ymin=-2, ymax=2, xmin=-2, xmax=2)

plot(g, edge.arrow.size=.2, edge.curved=0,vertex.color="orange", vertex.frame.color="#555555",vertex.label.color="black",vertex.label.cex=.7,rescale=F,layout=l) 

这会产生一个如下所示的图:https://imgur.com/7v1OqKd
显然这并不理想,因为该图不适合图片。因此,我尝试通过以下方式将绘图导出到 SVG 文件:

svg(width=20, height=20)
plot(g, edge.arrow.size=.2, edge.curved=0,vertex.color="orange", vertex.frame.color="#555555",vertex.label.color="black",vertex.label.cex=.7,rescale=F,layout=l) 
dev.off()

这会生成一个放大的 SVG 文件,我无法缩小以查看整个图形....即使我没有调整坐标或以不同方式缩放图形(我相信)。这是一张图片:https://imgur.com/hUTKYCZ

如何将整个图形很好地导出为 SVG 文件?我并不致力于 SVG per se,但这似乎是一个好方法。

编辑:添加 igraph 库和行来定义我的布局算法

【问题讨论】:

  • 当我尝试重新创建此问题时,我在 l &lt;- norm_coords(l, ymin=-2, ymax=2, xmin=-2, xmax=2) 收到错误 l is undefined.
  • @alaybourn 啊抱歉,我跳过了定义 l 的步骤。将其添加到我的原始帖子中 + 顶部包含 igraph 库。您现在应该可以重新创建了。

标签: r svg plot


【解决方案1】:

在绘图函数中更改 rescale=T 是否会产生您期望的结果?

plot(g, edge.arrow.size=.2, edge.curved=0,vertex.color="orange", vertex.frame.color="#555555",vertex.label.color="black",vertex.label.cex=.7,rescale=T,layout=l)

【讨论】:

  • 如果我设置 rescale=T,节点会真正聚集在一起:imgur.com/5jB8H9I 我希望这些节点之间有足够的间距。
  • 知道了。问题在于您的绘图功能和您选择的任何布局,而不是 svg 导出。基本上,svg 只是将您在绘图上看到的任何内容导出到矢量化文件。如果您想稍后调整大小,格式会更好,但如果您的绘图窗口太小,它将无济于事。我以前没有使用过 igraph,所以我可能无法让您更接近解决方案,抱歉!
  • 我想的也差不多。奇怪的是,svg 导出使它看起来更放大(具有相同的绘图/布局),而不是仅使用 plot() 出现在 rconsole 窗口中。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 2018-01-13
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多