首页 > 解决方案 > 在 R markdown 中截断的 iGraph 数字

问题描述

我有一些代码可以为以下最小生成树“cell_dtree”生成布局:

> cell_dtree
IGRAPH 951dfd5 D--- 720 719 -- 
+ edges from 951dfd5:
  [1] 400->  1   1->  2  38->  3   3->  4 197->  5  10->  6  10->  7  13->  8   1->  9  28-> 10 225-> 11 362-> 12  30-> 13
 [14]  20-> 14 148-> 15   3-> 16  13-> 17 160-> 18 435-> 19   1-> 20  60-> 21  38-> 22   9-> 23  68-> 24   9-> 25 178-> 26
 [27]  21-> 27   1-> 28  60-> 29   2-> 30   1-> 31   2-> 32   1-> 33 352-> 34  21-> 35  20-> 36   1-> 37   1-> 38 554-> 39
 [40]   3-> 40 554-> 41 333-> 42 352-> 43 126-> 44   1-> 45  69-> 46 227-> 47 160-> 48   1-> 49   1-> 50  37-> 51 708-> 52
 [53] 705-> 53 185-> 54 307-> 55  48-> 56 667-> 57 563-> 58 428-> 59 519-> 60 428-> 61 707-> 62   1-> 63 707-> 64 707-> 65
 [66] 707-> 66 214-> 67  20-> 68  68-> 69  37-> 70 453-> 71  57-> 72 148-> 73 345-> 74  69-> 75 148-> 76  80-> 77  79-> 78
 [79]   9-> 79  70-> 80  68-> 81 148-> 82  23-> 83 345-> 84 454-> 85 345-> 86  36-> 87 345-> 88  36-> 89 311-> 90 148-> 91
 [92]  13-> 92 345-> 93  13-> 94 350-> 95 326-> 96  79-> 97 666-> 98 539-> 99 430->100 554->101 213->102  20->103  38->104
[105]  21->105 172->106 112->107   1->108  20->109 453->110  80->111 703->112  20->113   9->114  79->115   1->116  47->117
+ ... omitted several edges

这是用于创建绘图的 r 降价代码。

    ```{r, results='asis', fig.width = 7, fig.heigt = 7}
    set.seed(1)
    l2 <- igraph::layout.lgl(cell_dtree)
    l2 <- igraph::layout.norm(l2, ymin = -2, ymax = 2, xmin = -2, xmax = 2)
    plot(cell_dtree, 
     rescale = F,
     layout = l2 * 1,
     edge.arrow.width=0.1,
     vertex.label=NA,
     vertex.size=1,
     vertex.label=NA,
     edge.width=0.5,
     edge.arrow.size=0.5,
     edge.arrow.width=0.7)
    ```

当这个文档通过 knittr 时,绘图看起来像是被切断了,在 knitr html 输出中只显示了中心的一个矩形区域。

![在此处输入图像描述

为了解决这个问题,我运行了 igraph 的 Erdos-Renyi 图的实现,使用与上图相同的顶点数(720)和相同的绘图参数:

    ```{r, results='asis', out.width = '100%', out.height = '100%', fig.width = 7, fig.heigt = 7}
er <- igraph::sample_gnm(n=720, m=40) 
plot(er, vertex.size=6, vertex.label=NA)  
set.seed(1)
l2 <- igraph::layout.lgl(er)
l2 <- igraph::layout.norm(l2, ymin = -2, ymax = 2, xmin = -2, xmax = 2)
plot(er, 
     rescale = F,
     layout = l2 * 1,
     vertex.label=NA,
     vertex.size=1,
     vertex.label=NA,
     edge.width=0.5,
     edge.arrow.size=0.5,
     edge.arrow.width=0.7)
```

然而,生成的图像正是我想要它做的:以一种有效的方式填充图形框,没有那些大的白色边框。显然不是所有的顶点都显示在这里,但缩放有助于显示布局正在使用图像的所有可用空间:

在此处输入图像描述

标签: rr-markdownknitrigraph

解决方案


推荐阅读