仅标记修改了x的ggplot中的点的子集

时间:2016-04-07 16:30:14

标签: r ggplot2

我有这种表:

dt <- data.table(titles=c('B','C','A','C'),
                 labs  =c('b','c','a','c'),
                 values=c( 3, 2, 3, 4))

为了绘制没有折叠和重新排序的点,我必须使用ggplot()执行以下操作:而不是aes(x=titles, y=values)我使用aes(x=seq_len(nrow(dt)), y=values)

ggplot(data = dt, 
       aes(x=seq_len(nrow(dt)), y=values)) + 
  geom_point() +
  geom_text(aes(label=labs)) +
  scale_x_discrete(labels=dt$titles) + xlab('titles')

现在我希望标签不是针对所有点,而是针对其中的一部分(例如,values>2)。这个电话不起作用:

ggplot(data = dt, 
       aes(x=seq_len(nrow(dt)), y=values)) + 
  geom_point() +
  geom_text(data=subset(dt, values>2), aes(label=labs)) +
  scale_x_discrete(labels=dt$titles) + xlab('titles')
 # Error: Aesthetics must be either length 1 or the same as the data (2): label, x, y

在这种情况下如何拨打geom_text()

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找inherit.aes=F选项:

dt2 <- subset(dt, values>2)
ggplot(data = dt, 
       aes(x=seq_len(nrow(dt)), y=values)) + 
  geom_point() +
  geom_text(data=dt2, aes(x=values, y=values, label=labs), inherit.aes=F) +
  scale_x_discrete(labels=dt$titles) + xlab('titles')