首页 > 解决方案 > 如何在 r ggplot 中为 dotplot 选择正确的参数

问题描述

我打算制作一个有点像这样的点图:

在此处输入图像描述

但是代码有一些问题:

df = data.frame(x=runif(100))

df %>%
  ggplot(aes(x )) + 
  geom_dotplot(binwidth =0.01, aes(fill = ..count..), stackdir = "centerwhole",dotsize=2, stackgroups = T, binpositions = "all") 

如何选择 bin 宽度以避免点重叠、bin 将自身包裹在 2 列中或点在顶部和底部被截断?

为什么y轴显示小数点而不是计数?以及如何通过 x 值对点着色?我尝试了 fill = x 并且没有显示颜色。

标签: rggplot2

解决方案


首先从帮助?geom_dotplot

当沿 x 轴分箱并沿 y 轴堆叠时,由于 ggplot2 的技术限制,y 轴上的数字没有意义。您可以隐藏 y 轴,如示例之一,或手动缩放它以匹配点数。

因此,您可以尝试关注。请注意,着色不完全适合 x 轴。

library(tidyverse)
df %>%
  ggplot(aes(x)) + 
  geom_dotplot(stackdir = "down",dotsize=0.8,
               fill = colorRampPalette(c("blue", "white", "red"))(100)) +
  scale_y_continuous(labels = c(0,10), breaks = c(0,-0.4)) +
  scale_x_continuous(position = "top") +
  theme_classic()

在此处输入图像描述

为了正确着色,您必须使用例如自己计算垃圾箱.bincode

df %>% 
  mutate(gr=with(.,.bincode(x ,breaks = seq(0,1,1/30)))) %>% 
  mutate(gr2=factor(gr,levels = 1:30, labels = colorRampPalette(c("blue", "white", "red"))(30))) %>% 
  arrange(x) %>% 
  {ggplot(data=.,aes(x)) + 
      geom_dotplot(stackdir = "down",dotsize=0.8,
                   fill = .$gr2) +
      scale_y_continuous(labels = c(0,10), breaks = c(0,-0.4)) +
      scale_x_continuous(position = "top") +
      theme_classic()}

在此处输入图像描述


推荐阅读