如何使用ggplot2

时间:2018-02-25 19:42:37

标签: r ggplot2

我在la liga中有一个足球比赛的数据框,我想制作一个表格,其中每一行和一列是一个团队名称,每个图块显示两个行和列之间的游戏结果

我尝试过多次使用geom_tileggplot2的方法很多,但我最接近的是下面的代码

library(dplyr)
library(engsoccerdata)
spain = as.data.frame(spain)
library(ggplot2)
game1 = filter(spain, Season == "2012")
ggplot(game1, aes(home, reorder(visitor,desc(visitor)), fill = FT)) + 
  geom_tile(color="white", size=1.5, stat="identity", height=1, width=1) + 
  scale_fill_brewer(palette = rep(c("blue","white"),30)) +
  geom_text(data=game1, aes(home, visitor, label = FT), size=rel(3)) +
  scale_x_discrete(position="top") + scale_y_discrete(expand = c(0, 0)) + 
  xlab("Home") + ylab("Visitor") +
  ggtitle("Laliga 2012")

我需要按奇怪的颜色排列(奇数行为白色,偶数行为蓝色) 此外,我希望团队名称在内部瓷砖 总而言之,我希望我的桌子看起来像第一张照片here,但带有条纹线

任何人都可以帮我修改我的代码吗?

1 个答案:

答案 0 :(得分:2)

您可以通过为填充指定新因子来更改行颜色。考虑例如此

fillframe = as.numeric(reorder(game1$visitor,desc(game1$visitor)))
fillframe = as.factor(ifelse(fillframe %% 2 == 0, 1, 0))

ggplot(game1, aes(home, reorder(visitor,desc(visitor)), fill = fillframe)) + 
  geom_tile(color="white", size=1.5, stat="identity", height=1, width=1) + 
  scale_fill_manual(values = c("white", "lightblue")) +
  geom_text(data=game1, aes(home, visitor, label = FT), size=rel(3)) +
  scale_x_discrete(position="top") + scale_y_discrete(expand = c(0, 0)) + 
  xlab("Home") + ylab("Visitor") +
  ggtitle("Laliga 2012") +
  theme(legend.position = "None",
        axis.text.x = element_text(angle = 315))

enter image description here

要在瓷砖中包含轴标签,您必须扩展轴(因为它是分类的,再次通过指定其他因素),请考虑this - 但是你最好只使用它Rmarkdown或HTML左右