向 igraph 的决策树添加多个额外标签
Adding multiple extra labels to decision tree of igraph
假设决策树通过 R 包可视化 igraph
。
library(igraph)
n_of_vertices = 31
g = graph.tree(n_of_vertices, 2)
edge_labels = rep(c("Yes","No"), times=n_of_vertices/2)
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
我正在寻找一种方法来在每个顶点行的左侧添加额外的标签,例如 "Decision 1"、"Decision 2" 等。我将这些标签以红色字体添加到下面的例子。
magickr
可用于操纵绘图并用文本进行注释。
library(igraph)
library(magick)
n_of_vertices = 31
g = graph.tree(n_of_vertices, 2)
edge_labels = rep(c("Yes","No"), times=n_of_vertices/2)
fig <- image_graph(width = 600, height = 600, res = 96)
#img <- image_draw(frink)
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
dev.off()
out <- fig %>%
image_annotate("Decision Tree", size = 20, color = "black",
degrees = 0, location = "+250+100")
print(out)
您可以只使用text
功能。
## Your tree plot
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
text(x=-1.2, y=c(0.5, 0, -0.5),
labels=c("Decision 1", "Decision 2", "Decision 3"),
col="red")
这里的技巧之一是决定在哪里放置文本。我如何获得 x,y 坐标来放置标签?我用了locator
。这使您只需单击图表上的一个点并找到它的坐标。您可能需要稍微调整或使用 cex
调整字体大小。
假设决策树通过 R 包可视化 igraph
。
library(igraph)
n_of_vertices = 31
g = graph.tree(n_of_vertices, 2)
edge_labels = rep(c("Yes","No"), times=n_of_vertices/2)
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
我正在寻找一种方法来在每个顶点行的左侧添加额外的标签,例如 "Decision 1"、"Decision 2" 等。我将这些标签以红色字体添加到下面的例子。
magickr
可用于操纵绘图并用文本进行注释。
library(igraph)
library(magick)
n_of_vertices = 31
g = graph.tree(n_of_vertices, 2)
edge_labels = rep(c("Yes","No"), times=n_of_vertices/2)
fig <- image_graph(width = 600, height = 600, res = 96)
#img <- image_draw(frink)
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
dev.off()
out <- fig %>%
image_annotate("Decision Tree", size = 20, color = "black",
degrees = 0, location = "+250+100")
print(out)
您可以只使用text
功能。
## Your tree plot
plot(g,
layout = layout.reingold.tilford(g, root=1),
asp=0.5,
vertex.shape="square",
vertex.label=NA,
vertex.size=6,
vertex.color="black",
vertex.frame.color="white",
edge.width=3,
edge.arrow.mode=0,
edge.label=edge_labels,
edge.label.family="sans",
edge.label.color="black",
edge.label.cex=0.75)
text(x=-1.2, y=c(0.5, 0, -0.5),
labels=c("Decision 1", "Decision 2", "Decision 3"),
col="red")
这里的技巧之一是决定在哪里放置文本。我如何获得 x,y 坐标来放置标签?我用了locator
。这使您只需单击图表上的一个点并找到它的坐标。您可能需要稍微调整或使用 cex
调整字体大小。