Сохранение конечных нулей с помощью plotmath

Я использую annotate() для наложения текста на один из моих ggplot2 графиков. Я использую вариант parse=T, потому что мне нужно использовать греческую букву ро. Я бы хотел, чтобы в тексте было = -0.50, но конечный ноль обрезается, и вместо этого я получаю -0.5.

Вот пример:

library(ggplot2)
x<-rnorm(50)
y<-rnorm(50)
df<-data.frame(x,y)

ggplot(data=df,aes(x=x,y=y))+
geom_point()+
annotate(geom="text",x=1,y=1,label="rho==-0.50",parse=T)

Кто-нибудь знает, как я могу получить последний 0, чтобы появиться? Я подумал, что могу использовать paste() вот так:

annotate(geom="text",x=1,y=1,label=paste("rho==-0.5","0",sep=""),parse=T)

но потом получаю ошибку:

Error in parse(text = lab) : <text>:1:11: unexpected numeric constant
1: rho==-0.5 0
             ^

person David Vandergucht    schedule 13.03.2013    source источник


Ответы (1)


Это проблема синтаксического анализа выражений plotmath; это не ggplot2 связано.

Что вы можете сделать, так это убедиться, что 0.50 интерпретируется как строка символов, а не числовое значение, которое будет округлено:

ggplot(data=df, aes(x=x, y=y)) +
    geom_point() +
    annotate(geom="text", x=1, y=1, label="rho=='-0.50'", parse=T)

Вы получите такое же поведение, используя base:

plot(1, type ='n')
text(1.2, 1.2, expression(rho=='-0.50'))
text(0.8, 0.8, expression(rho==0.50))

Если вам нужен более общий подход, попробуйте что-то вроде

sprintf('rho == "%1.2f"',0.5)

Существует поток r-help в связи с этим вопросом.

person mnel    schedule 13.03.2013