我有一个数据集,我正试图用点图来显示,但这很有挑战性,因为我的一些网站比其他网站有更多的数据.有没有办法调整x轴上的比例,这样在下面的例子中,A和B比C有更多的空间?

data.frame(site = c(rep("A", 6000), rep("B", 2000), rep("C", 100)),
           mass = rnorm(8100, mean = 60, sd = 5)) %>% 
  ggplot(aes(x = site, y = mass)) +
  geom_dotplot(binaxis = "y", stackdir = "center", dotsize = 0.11, binwidth = 1, col = "grey50")

enter image description here

推荐答案

如果我们设计出一种方法,将离散比例转换为连续比例,并将分组保持在geom_dotplot以内,我们就可以在site组之间获得不同的宽度.

library(dplyr) # just a convenient way, many base-R options exist for this step
sites <- count(dat, site) %>%
  mutate(site_x = n[1] + c(0, cumsum(2 * n)[-n()]))
sites
#   site    n site_x
# 1    A 6000   6000
# 2    B 2000  18000
# 3    C  100  22000

left_join(dat, sites, by="site") %>%
  ggplot(aes(site_x, mass)) +
  geom_dotplot(aes(group=site), binaxis = "y", stackdir = "center", dotsize = 0.11, binwidth = 0.7, col = "grey50") +
  scale_x_continuous(
    limits=c(0, max(sites$site_x)),
    breaks=sites$site_x, labels=sites$site
  ) +
  theme(panel.grid.minor.x = element_blank())

enter image description here

我认为binwidth=0.7看起来是合理的,玩其他的"旋钮"来调整它,以适应您的喜好.

R相关问答推荐

使用预定值列表将模拟数量(n)替换为rnorm()

带有gplot 2的十字舱口

如何对数据集进行逆向工程?

如何在R中合并和合并多个rabrame?

如何在R中添加截止点到ROC曲线图?

用预测NLS处理R中生物学假设之上的误差传播

R for循环返回到先前值

我不能在docker中加载sf

RStudio中相关数据的分组箱形图

gganimate在使用shadow_mark选项时不保留所有过go 的标记

如何改变x轴比例的列在面

在嵌套列表中查找元素路径的最佳方法

Geom_Hline将不会出现,而它以前出现了

我们如何在R中透视数据并在之后添加计算

如何计算增加10米(0.01公里)的行?

防止正则表达式覆盖以前的语句

在r中整理图例和堆叠图的问题

在R中使用ggraph包排列和着色圆

从字符串01JAN2021创建日期

根据向量对列表元素进行排序