如何使用分类x变量沿对角线偏移点?
是否有类似position_jitter
的东西来实现这一目标?
ggplot(mpg, aes(cyl, hwy)) + geom_point(position = position_jitter(width = 0.2))
在此示例中,每个hwy
的最高cyl
值应位于该类别的左上角,最低hwy
的值应位于右下角。
答案 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日创建。