为什么这些实线出现在我在 ggplot 中的绘图下方?

Why are these solid lines appearing below my plot in ggplot?

这是我的代码:

pokemon <- read_csv("https://uwmadison.box.com/shared/static/hf5cmx3ew3ch0v6t0c2x56838er1lt2c.csv")

pokemon %>%  
  select(Name, type_1, Attack, Defense) %>% 
  mutate(AttDefRatio = Attack/Defense) %>% 
  ggplot(
    aes(Name, AttDefRatio)
  ) +
  geom_point(size = 0.5) +
  facet_wrap(type_1 ~ .) +
  theme(legend.position = "bottom")

对于这个家庭作业,我们正在处理分面,一切看起来都应该是这样,但是在图的底部有两条粗线。如果有人知道为什么会这样,那就太棒了!

这两行实际上是x轴标签,但是你可以用axis.text.x=element_blank()删除它们:

pokemon %>%  
    select(Name, type_1, Attack, Defense) %>% 
    mutate(AttDefRatio = Attack/Defense) %>% 
    ggplot(
        aes(Name, AttDefRatio)
    ) +
    geom_point(size = 0.5) +
    facet_wrap(type_1 ~ .) +
    theme(legend.position = "bottom", axis.text.x=element_blank())

或者,如果您想通过在 facet_wrap 中设置为 free_x 来显示个人 Names,然后在 theme 中更改文本大小。虽然在一张图上显示的信息很多,而且很难看到。

pokemon %>%  
  select(Name, type_1, Attack, Defense) %>% 
  mutate(AttDefRatio = Attack/Defense) %>% 
  ggplot(
    aes(Name, AttDefRatio)
  ) +
  geom_point(size = 0.5) +
  facet_wrap(type_1 ~ ., ncol = 5, scales = "free_x") +
  theme(legend.position = "bottom", axis.text.x=element_text(angle = 90, vjust = 0.5, hjust=1, size = 3))

这些是你的 x 轴标签。分面后的标签比可用的 space 长得多,因此它们重叠成一个大混乱。

可能的解决方案:

  • 使用 coord_flip(),这通常是解决长 x 轴标签的好方法
  • 重新编码 x 变量标签以使其更短
  • 使用 facet_wrap()
  • ncol 参数减少列数
  • 通过折叠或删除案例较少的组来减少面的数量

我认为您的问题因每个方面列重复的每个 Pokémon 名称而变得更加复杂,即使每个方面实际上只出现了一个子集。您可以通过在 facet_wrap() 中设置 scales = "free_x" 来解决此问题,这样只有包含在每个方面的标签才会被包含。