我有个图显示了随着时间的推移改进百分比。该图具有一些-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
?
答案 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))
))
唯一的缺点是您可能必须为颜色图例找到更漂亮的标题。