使用R data.tree包或igraph与Graphviz进行绘图

时间:2019-06-23 16:22:18

标签: r plot tree graphviz

如何使用data.tree包或igraph绘制以下家谱数据?我似乎都无法工作。

require(data.tree)
as.Node(fam)

###Output###
Error in `[[<-.data.frame`(`*tmp*`, pathName, value = character(0)) : 
  replacement has 0 rows, data has 49
require(igraph)
fam=fam[-1,]
g = graph.data.frame(fam)
dev.new()
plot(g)

结果:

Result of plot()


数据: 这是上面引用的fam数据帧的一部分:

structure(list(name = structure(c(20L, 23L, 22L, 19L, 24L, 21L, 
1L, 2L, 3L, 29L, 39L, 46L, 47L, 8L, 9L, 10L, 13L, 11L, 12L, 14L
), .Label = c("1【宣帝】司馬懿", "2【景帝】司馬師", 
"3【文帝】司馬昭", "4【武帝】司馬炎", "5【惠帝】司馬衷", 
"6【懷帝】司馬熾", "7【愍帝】司馬鄴", "A【元帝】司馬睿", 
"B【明帝】司馬紹", "C【成帝】司馬衍", "D【康帝】司馬岳", 
"E【穆帝】司馬聃", "F【哀帝】司馬丕", "G【簡文帝】司馬昱", 
"H【孝武帝】司馬曜", "I【安帝】司馬德宗", "J【恭帝】司馬德文", 
"代哀王演", "司馬俊", "司馬卬", "司馬朗", "司馬量", 
"司馬鈞", "司馬防", "吳孝王晏", "城陽懷王景", 
"城陽殤王憲", "始平哀王裕", "平原王乾", "成都王穎", 
"扶風武王駿", "新都懷王該", "東安王繇", "東海沖王祗", 
"梁王肜", "楚隱王瑋", "武陵莊王澹", "毗陵悼王軌", 
"汝南文成王亮", "汝陰哀王謨", "淮南忠壯王允", 
"淮陵元王漼", "清惠亭侯京", "清河康王遐", "渤海殤王恢", 
"琅邪武王伷", "瑯邪恭王覲", "秦獻王柬", "趙王倫", 
"長沙厲王乂"), class = "factor"), parent = c(NA, "司馬卬", 
"司馬鈞", "司馬量", "司馬俊", "司馬防", "司馬防", 
"1【宣帝】司馬懿", "1【宣帝】司馬懿", "1【宣帝】司馬懿", 
"1【宣帝】司馬懿", "1【宣帝】司馬懿", "琅邪武王伷", 
"瑯邪恭王覲", "A【元帝】司馬睿", "B【明帝】司馬紹", 
"C【成帝】司馬衍", "B【明帝】司馬紹", "D【康帝】司馬岳", 
"A【元帝】司馬睿")), row.names = c(NA, 20L), class = "data.frame")

我只需要一个看起来不错的图形即可将父母与孩子联系起来。


更新:

上面的data.frame是用org来源的R代码转换而成的,该代码看起来像这样:

* 司馬卬
** 司馬鈞
*** 司馬量
**** 司馬俊
***** 司馬防
****** 司馬朗
****** 1【宣帝】司馬懿
******* 2【景帝】司馬師 :穆張皇后:
******* 3【文帝】司馬昭 :穆張皇后:
******* 平原王乾 :穆張皇后:
******* 汝南文成王亮 :伏夫人:
******* 琅邪武王伷 :伏夫人:
******** 瑯邪恭王覲
********* A【元帝】司馬睿

我设法使用Graphviz绘制了整个数据集的树形图。

Tree diagram by Graphviz.

但是我仍然无法从R本身中得到一个看起来不错的图表。

我确信R可以做得更好/更多,我很好奇要了解更多。

这就是为什么我在这里问这个问题。

0 个答案:

没有答案