4

使用 ggplot2 绘制连续数据时,有没有办法在轴上包含字符值?我审查了以下数据:

   x  y Freq
1 -3 16    3
2 -2 12    4
3  0 10    6
4  2  7    7
5  2  4    3

最后一行数据是右删失的。我正在用下面的代码绘制它以生成以下图:

a1 = data.frame(x=c(-3,-2,0,2,2), y=c(16,12,10,7,4), Freq=c(3,4,6,7,3))
fit = ggplot(a1, aes(x,y)) + geom_text(aes(label=Freq), size=5)+
  theme_bw() +
  scale_x_continuous(breaks = seq(min(a1$x)-1,max(a1$x)+1,by=1),
                     labels = seq(min(a1$x)-1,max(a1$x)+1,by=1),
                     limits = c(min(a1$x)-1,max(a1$x)+1))+
  scale_y_continuous(breaks = seq(min(a1$y),max(a1$y),by=2))

在此处输入图像描述

(2,4) 处的 3 个点是右删失的。我希望它们用相应的 xaxis 刻度线'> = 2'而不是 3 绘制在右侧一个单位。如果可能的话,有什么想法吗?

4

1 回答 1

4

这是很有可能。我破解了数据,所以2,4它是3,4. 然后我修改了你的标签,只要它们与中断的长度相同,就可以是你想要的任何东西。

ggplot(a1, aes(x,y)) + geom_text(aes(label=Freq), size=5)+
theme_bw() +
scale_x_continuous(breaks = seq(min(a1$x)-1,max(a1$x),by=1),
                   labels = c(seq(min(a1$x)-1,max(a1$x)-1,by=1), ">=2"),
                   limits = c(min(a1$x)-1,max(a1$x)))+
scale_y_continuous(breaks = seq(min(a1$y),max(a1$y),by=2))

在此处输入图像描述

于 2012-08-27T14:24:59.800 回答