如何使用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)
数据:
这是上面引用的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
绘制了整个数据集的树形图。
但是我仍然无法从R本身中得到一个看起来不错的图表。
我确信R可以做得更好/更多,我很好奇要了解更多。
这就是为什么我在这里问这个问题。