我使用简单的解决方案很可能遇到问题。我有两个数据帧。首先是一个简单的边列表与权重,看起来像这样:使用ggplot使用来自一个文件的数据和使用另一个文件的颜色编码绘制网络
head(merge_allwinsloss_df)
winner loser weight
1 CAL HAW 20
2 TENN APP 7
3 LOU CHAR 56
4 CMU PRE 46
5 WAKE TULN 4
6 CIN UTM 21
,第二个是,它提供的分组(在大学橄榄球会议的形式),看起来像这样的文件:
short conference
1 TEM AAC
2 USF AAC
3 UCF AAC
4 CIN AAC
5 ECU AAC
6 CONN AAC
我想要做的是创建一个使用有向图(从赢家到失败者)的图(最好使用ggplot),在同一个会议中加权边缘(通过权重)并对这些边进行颜色处理,并使用颜色代码节点通过会议。下面的代码是一个“开始”,但我并没有真正得到任何地方。
ggplot(data = merge_allwinsloss_df, aes(from_id = winner, to_id = loser)) +
geom_net(aes(color = all_teams_by_conference_df), layout.alg = "fruchtermanreingold",
size = 2, labelon = TRUE, vjust = -0.6, ecolour = "grey80",
directed = TRUE, fontsize = 3, ealpha = 0.5) +
scale_color_brewer("Conference",
palette = "Paired") +
xlim(c(-0.05, 1.05)) +
theme_net() +
theme(legend.position = "bottom")
我融化了数据但也引起了不少的大多是要么失去映射或我无法弄清楚如何通过会议正确标记的团队merge_allwinsloss_df
相关的其他问题。如果这不是明显的话,我很抱歉。我一直在寻找帮助,把我的大脑折腾了好几天,所以任何帮助都会得到很大的赞赏。提前致谢。
更新:这是一个最小的例子。
#Create a list of CFB winners and losers with weight given by point differential
merge_allwinsloss_ALT_df <- data.frame(matrix(c("CAL","HAW", 12, "TENN", "APP", 7, "LOU", "CHAR", 56,
"CMU", "HAW", 0, "WVU", "APP", 20 , "ARK", "TENN", 6, "CMU", "WVU", 7,
"WVU", "JMU", 15, "IND", "MIN", 3, "IND", "HAW", 14, "FSU", "TCU", 2,
"TCU", "ARK", 14),
nrow=12,ncol=3,byrow=TRUE))
colnames(merge_allwinsloss_ALT_df) <- c("winner", "loser", "weight")
merge_allwinsloss_ALT_df
#Create a list of CFB teams with conference associations
all_teams_by_conference_ALT_df<- data.frame(matrix(c("CAL","PAC", "HAW", "MAC", "TENN", "SEC",
"APP", "SUN BELT", "LOU", "ACC", "CHAR", "FCS",
"CMU", "MAC", "WVU", "BIG 12", "ARK", "SEC", "JMU", "FCS",
"IND", "BIG 10", "MIN", "BIG 10", "FSU", "ACC", "TCU",
"BIG 12"),
nrow=14,ncol=2,byrow=TRUE))
colnames(all_teams_by_conference_ALT_df) <- c("team", "conference")
all_teams_by_conference_ALT_df
# (attempt to) Plot the two data files using the first as the nodes and the # second as a reference file for coloring by conference.
ggplot(data = merge_allwinsloss_ALT_df, aes(from_id = winner, to_id = loser)) +
geom_net(aes(color = all_teams_by_conference_ALT_df), layout.alg = "fruchtermanreingold",
size = 2, labelon = TRUE, vjust = -0.6, ecolour = "grey80",
directed = TRUE, fontsize = 3, ealpha = 0.5) +
scale_color_brewer("Conference",
palette = "Paired") +
xlim(c(-0.05, 1.05)) +
theme_net() +
theme(legend.position = "bottom")
我意识到有些东西是在这里,但我无法弄清楚。此外,我想设置它,以便(a)在同一个会议中所有参加过比赛的球队的边缘都有共同的颜色,并且(b)使用merge_allwinsloss_df_ALT
中的权重列来加权边缘。
谢谢你的帮助!
TEM和AAC是一次会议的一部分?数据框缺少标题 –
如果您提供[完整的最小可重现示例](http://stackoverflow.com/help/mcve)以解决您的问题,那么我们很可能可以为您提供帮助。我们可以从中学习并使用它来向您展示如何回答您的问题。 –
对不起@HardikGupta。我已经解决了表问题。它现在有标题。 @EricFail,当我尝试运行图时,我收到了这个输出: '错误:美学必须是长度1或与数据(832)相同:color,from_id,to_id.'感谢您的帮助。 –