显示x轴中断的y值

时间:2020-04-04 08:58:22

标签: r ggplot2

我想突出显示向绘图添加y值文本,但仅适用于设置x轴折断的那些点。在我的原始数据中,x值是无法创建的,但是为了简单起见,让我们以0到125的序列为例,希望我可以自己转移数据的解决方案。 如果我简单地输入

... + geom_text(aes(label=y),size=3) + ...

这将导致无法读取的混乱。例如

enter image description here

这是我的绘图代码和示例数据的样子。

data %>%
  group_by(x) %>%  
  summarise(y= sum(y,na.rm = TRUE)) %>% 
  ggplot( aes(x=x,y=y,group=1)) + 
  scale_x_continuous(breaks = c(1,50,75,100,125))+   
  geom_text(aes(label = y), size = 3)+
  geom_line()


# while the data after summarised looks somethat like this
x <- seq(1,125,1)
y <- x^2
data <- data.frame(cbind(x,y))

非常感谢您的所有回复。 问候

编辑: 在我的评论中,我提到“奇怪的行为”,我只是想向您展示我的真实数据发生了什么。

strange things happen here

使用标记的答案不会发生这种情况。

2 个答案:

答案 0 :(得分:2)

您可以将subset参数包含在geom_text函数中,该函数仅允许您绘制满足条件的值的子集。

x <- seq(1,125,1)
y <- x^2

dat <- data.frame(cbind(x,y))

dat %>%
  group_by(x) %>%  
  summarise(y= sum(y,na.rm = TRUE)) %>% 
  ggplot( aes(x=x,y=y,group=1)) + 
  scale_x_continuous(breaks = c(1,50,75,100,125))+   
  geom_text(data = subset(dat, x %in% c(1,50,75,100,125)), aes(label = y), size = 3)+
  geom_line()

enter image description here

答案 1 :(得分:2)

您可以将带有标签的列添加到数据集中,而不必为标签使用“第二”数据框。正如我从Thomas Lin Pedersen的ggplot2研讨会上了解到的那样,这种方法更为通用,例如如果您想使用^1.2.3包中的geom_text_repel

ggrepel

reprex package(v0.3.0)于2020-04-04创建

相关问题