【问题标题】:How do I force ggplot axis to include values not present in data?如何强制 ggplot 轴包含数据中不存在的值?
【发布时间】:2021-07-24 14:27:06
【问题描述】:

我有一个数据集,其中包含一系列生物体按天和按小时进行的观察。
我想分别绘制每组观察结果。但是,如果在时间序列开始时没有观察到,它会将该时间从轴上截断(即,在第 1 天没有看到动物,所以轴从第 2 天开始) - 结果我的图有不同的轴。由于不同的原因,无论是 scale_y_discrete 还是 Continuous 工作。这看起来应该很容易。

df <- data.frame("day"= c(1, 1, 1, 2, 2, 2, 3, 3, 3),"hour" = c(1, 2, 3, 1, 2, 2, 1, 2, 3),"a" = c("Y", "Y", "N", "N", "N", "Y", "N", "N", "N"), "b" = c("N", "N", "Y", "N", "N", "Y", "Y", "N", "Y")) #example data

df %>%
pivot_longer(cols = a) %>%
filter(value == 'Y') %>% #I only want to display Y or positive observations
mutate(across(c(day, hour), factor)) %>%
ggplot() + aes(day, hour, color = name) + geom_point()

【问题讨论】:

标签: r ggplot2 data-visualization


【解决方案1】:

dayfactor
您可以在scale_x_discrete 中设置要显示的levels 和使用drop = FALSE

df %>%
  pivot_longer(cols = a) %>%
  filter(value == 'Y') %>% #I only want to display Y or positive observations
  mutate(day=factor(day,levels=1:4),
         hour=factor(hour)) %>%
  ggplot() + aes(day, hour, color = name) + geom_point() +
             scale_x_discrete(drop = FALSE)

【讨论】:

  • @brc,它回答了你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 2010-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多