在ggplot上标记inf和-inf值

时间:2019-08-19 18:12:25

标签: r ggplot2

我有个图显示了随着时间的推移改进百分比。该图具有一些-inf值,因为与0的初始值相比有所减少。我想尽可能将这些值保留在图中,因为它们表明数量有所减少。

我尝试贴标签:

... + 
geom_text(data=subset(symptom_data, is.infinite(improvement) == TRUE),
          aes(months, improvement, label="divide by 0"))

除了is.infinite(improvement) == TRUE以外,我还尝试了其他几种条件,但是我总是遇到相同的错误:

  

错误:美学的长度必须为1或与数据(1)相同:x,y,颜色

奇怪的是,如果我在条件中包含其他值,例如-inf,它将标记improvement < 5值。

有什么方法只能标记inf-inf

1 个答案:

答案 0 :(得分:2)

关于ggplot的一件整洁的事情是,美感映射中的代码将在您提供的数据的上下文中进行评估。因此,您可以执行以下操作:

df <- iris
# Sprinkle some infinites around
df$Sepal.Width[sample(150, 10)] <- -Inf
df$Sepal.Length[sample(150, 10)] <- Inf

ggplot(df, aes(Sepal.Width, Sepal.Length)) +
  geom_point(aes(
    colour = ifelse(!is.finite(Sepal.Width) | !is.finite(Sepal.Length), 
                    "Infinite point", as.character(Species))
  ))

enter image description here

唯一的缺点是您可能必须为颜色图例找到更漂亮的标题。