将因素分成方面?

Separating factors into facets?

我希望因子按小平面分隔,如 Hadley 的 ggplot2 书第 154 页所示,但我的代码却包含每个小平面中的所有因子。不知道我做错了什么。这是代码:

tw %>% 
  ggplot(mapping = aes(x = Likes, y = PlayerName)) + 
  ylab("Players") + xlab("Likes per Tweet") + 
  ggtitle("Engagement per Player") + 
  scale_color_manual(values=c("#5DADE2", "#333333", "#A569BD")) +
  facet_grid(Sport ~., space = "free") +
  geom_point()

其中tw的样本如下:

tw <- structure(list(PlayerName = structure(c(6L, 11L, 1L, 1L, 3L, 
15L, 12L, 15L, 3L, 14L, 15L, 13L, 15L, 11L, 15L, 11L, 15L, 12L, 
8L, 12L, 2L, 5L, 1L, 14L, 15L, 15L, 3L, 5L, 15L, 13L, 9L, 12L, 
11L, 11L, 14L, 5L, 3L, 6L, 10L, 1L, 13L, 9L, 8L, 14L, 11L, 4L, 
15L, 12L, 6L, 13L, 11L, 13L, 5L, 8L, 1L, 5L, 6L, 13L, 14L, 10L, 
10L, 13L, 10L, 6L, 14L, 12L, 2L, 3L, 12L, 5L, 13L, 14L, 10L, 
6L, 9L, 5L, 6L, 13L, 5L, 6L, 15L, 8L, 4L, 4L, 12L, 5L, 8L, 10L, 
15L, 12L, 11L, 3L, 10L, 6L, 3L, 13L, 12L, 8L, 14L, 13L, 15L, 
11L, 9L), .Label = c("Chris Paul", "Dwayne Wade", "Jeremy Lin", 
"LeBron James", "Steph Curry", "J.J. Watt", "Odell Beckham Jr", 
"Richard Sherman", "Rob Gronkowski", "Russell Wilson", "Cristiano Ronaldo", 
"Gareth Bale", "Mesut Ozil", "Neymar Jr", "Paul Pogba"), class = "factor"), 
    Sport = c("Football", "Soccer", "Basketball", "Basketball", 
    "Basketball", "Soccer", "Soccer", "Soccer", "Basketball", 
    "Soccer", "Soccer", "Soccer", "Soccer", "Soccer", "Soccer", 
    "Soccer", "Soccer", "Soccer", "Football", "Soccer", "Basketball", 
    "Basketball", "Basketball", "Soccer", "Soccer", "Soccer", 
    "Basketball", "Basketball", "Soccer", "Soccer", "Football", 
    "Soccer", "Soccer", "Soccer", "Soccer", "Basketball", "Basketball", 
    "Football", "Football", "Basketball", "Soccer", "Football", 
    "Football", "Soccer", "Soccer", "Basketball", "Soccer", "Soccer", 
    "Football", "Soccer", "Soccer", "Soccer", "Basketball", "Football", 
    "Basketball", "Basketball", "Football", "Soccer", "Soccer", 
    "Football", "Football", "Soccer", "Football", "Football", 
    "Soccer", "Soccer", "Basketball", "Basketball", "Soccer", 
    "Basketball", "Soccer", "Soccer", "Football", "Football", 
    "Football", "Basketball", "Football", "Soccer", "Basketball", 
    "Football", "Soccer", "Football", "Basketball", "Basketball", 
    "Soccer", "Basketball", "Football", "Football", "Soccer", 
    "Soccer", "Soccer", "Basketball", "Football", "Football", 
    "Basketball", "Soccer", "Soccer", "Football", "Soccer", "Soccer", 
    "Soccer", "Soccer", "Football"), Likes = c(644L, 15369L, 
    656L, 758L, 752L, 10776L, 1838L, 4557L, 728L, 7100L, 7506L, 
    7907L, 1933L, 32945L, 1619L, 9450L, 7241L, 1154L, 442L, 5315L, 
    2300L, 7300L, 2500L, 6700L, 7778L, 8454L, 1600L, 3500L, 1615L, 
    7296L, 647L, 3753L, 13887L, 22775L, 13000L, 11000L, 1600L, 
    1400L, 948L, 933L, 6904L, 3100L, 104L, 12000L, 31200L, 13700L, 
    2674L, 16891L, 1800L, 27629L, 56053L, 6257L, 12000L, 1600L, 
    2400L, 3900L, 275L, 6208L, 8300L, 3900L, 1200L, 6500L, 1900L, 
    18000L, 2200L, 9522L, 95L, 800L, 6406L, 14000L, 4976L, 12000L, 
    1200L, 3000L, 1000L, 25000L, 741L, 9761L, 12000L, 559L, 2079L, 
    541L, 1129L, 4389L, 2197L, 34000L, 1200L, 1900L, 2222L, 1890L, 
    26767L, 2452L, 651L, 7300L, 3300L, 3823L, 4941L, 215L, 13000L, 
    11994L, 926L, 11946L, 561L)), row.names = c(194L, 529L, 902L, 
925L, 794L, 295L, 677L, 366L, 828L, 960L, 291L, 390L, 378L, 517L, 
310L, 578L, 293L, 678L, 238L, 635L, 713L, 736L, 928L, 946L, 281L, 
303L, 793L, 753L, 349L, 430L, 89L, 649L, 541L, 527L, 987L, 743L, 
804L, 140L, 48L, 894L, 426L, 71L, 227L, 1026L, 501L, 861L, 329L, 
595L, 186L, 393L, 523L, 461L, 776L, 242L, 887L, 758L, 171L, 429L, 
937L, 57L, 7L, 432L, 21L, 133L, 934L, 675L, 725L, 795L, 583L, 
779L, 467L, 1007L, 49L, 185L, 106L, 766L, 158L, 443L, 780L, 143L, 
321L, 229L, 840L, 872L, 600L, 769L, 260L, 63L, 372L, 670L, 492L, 
830L, 1L, 160L, 798L, 441L, 660L, 221L, 1005L, 478L, 344L, 526L, 
114L), class = "data.frame", .Names = c("PlayerName", "Sport", 
"Likes"))

剧情如下:

在对 facet_grid() 的调用中使用 scales = "free" 而不是 space = "free" 我确实得到了

这是您期望的吗?

代码:

library(ggplot2)
ggplot(tw, aes(x = Likes, y = PlayerName)) + 
  ylab("Players") + xlab("Likes per Tweet") + 
  ggtitle("Engagement per Player") + 
  scale_color_manual(values = c("#5DADE2", "#333333", "#A569BD")) +
  facet_grid(Sport ~., scales = "free") +
  geom_point()