对角线上的偏移点-类似和geom_jitter

时间:2018-12-27 21:18:55

标签: r ggplot2

如何使用分类x变量沿对角线偏移点?

是否有类似position_jitter的东西来实现这一目标?

ggplot(mpg, aes(cyl, hwy)) + geom_point(position = position_jitter(width = 0.2))

在此示例中,每个hwy的最高cyl值应位于该类别的左上角,最低hwy的值应位于右下角。

1 个答案:

答案 0 :(得分:1)

这是一个轻率的解决方案:

library(tidyverse)

p1 <- ggplot(mpg, aes(cyl, hwy)) + geom_point()

diagonal_plot <- function(.plot) {
  p <- ggplot_build(.plot)
    p$data[[1]] <- 
       p$data[[1]] %>% 
       group_by(x) %>% 
       mutate(order_y = as.integer(factor(y))) %>% 
# making helper column for ranks depending on height of y
       ungroup %>% 
       mutate(x = x - order_y/100) %>% 
#this one was just an idea to create the offset to x depending on the rank of y
       select(-order_y)

plot(ggplot_gtable(p))

}

diagonal_plot(p1)

reprex package(v0.2.0)于2018年12月27日创建。