我希望使用 ggplot2 可视化 igraph 对象的度数分布。因为 ggplot2 不接受degree()
生成的简单数字向量,所以我将其转换为频率表。然后我把它传递给ggplot()
。我仍然得到:geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
我无法将表格列degree
设置为因子,因为我还需要在对数刻度上绘制它。
library(igraph)
library(ggplot2)
g <- ba.game(20)
degree <- degree(g, V(g), mode="in")
degree
# [1] 6 2 7 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0
degree <- data.frame(table(degree))
degree
# degree Freq
# 1 0 13
# 2 1 4
# 3 2 1
# 4 6 1
# 5 7 1
ggplot(degree, aes(x=degree, y=Freq)) +
geom_line()
# geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
答案 0 :(得分:2)
问题在于您已使用degree$degree
将table
转换为因子。有两件事要解决这个问题:
实施这些(我使用degree.df
而不是覆盖degree
来保持不同的步骤不同):
degree.df <- data.frame(table(degree=factor(degree, levels=seq_len(max(degree)))))
degree.df$degree <- as.numeric(as.character(degree.df$degree))
然后绘图代码就是你所拥有的:
ggplot(degree.df, aes(x=degree, y=Freq)) +
geom_line()