首页 > 解决方案 > 减少绘图 X 标签中的距离(R:ggplot2)

问题描述

这是我的数据框:

df = data.frame(info=1:30, type=c(replicate(5,'A'), replicate(5,'B')), group= c(replicate(10,'D1'), replicate(10,'D2'), replicate(10,'D3')))

我想制作一个按组(X-label)和类型(颜色)区分的数据的抖动图:

ggplot()+
  theme(panel.background=element_rect(colour="grey", size=0.2, fill='grey100'))+
  geom_jitter(data=df, aes(x=group, y=info, color=type, shape=type), position=position_dodge(0.2), cex=2)+
  scale_shape_manual(values=c(17,15,19))+
  scale_color_manual(values=c(A="mediumvioletred", B="blue"))

在此处输入图像描述

如何减少表示中 X 标签(D1、D2、D3)之间的距离?

PD 即使我在图形中留有空白我也想做

标签: rggplot2jitter

解决方案


这里有几个选项。

# Setting up the plot
library(ggplot2)

df <- data.frame(
  info=1:30, 
  type=c(replicate(5,'A'), replicate(5,'B')), 
  group= c(replicate(10,'D1'), replicate(10,'D2'), replicate(10,'D3'))
)

p <- ggplot(df, aes(group, info, colour = type, shape = type))

方案一:增加闪避距离。这不会使标签更靠近,但它可以更好地利用可用空间,从而使标签看起来不那么孤立。

p +
  geom_point(position = position_dodge(width = 0.9))

选项 2:展开 x 轴。将扩展因子从默认值 0.5 增加到 >0.5 会增加轴末端的空间,从而使标签更靠近。

p +
  geom_point(position = position_dodge(0.2)) +
  scale_x_discrete(expand = c(2, 0))

选项 3:更改纵横比。根据绘图窗口的大小,这也会在视觉上将 x 轴标签靠得更近。

p + 
  geom_point(position = position_dodge(0.2)) +
  theme(aspect.ratio = 2)

reprex 包(v1.0.0)于 2021-06-25 创建


推荐阅读