Ошибка разбора (text = x) при включении неперекрывающихся меток в ggplot2

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

Error in parse(text = x) : <text>:1:1: unexpected '$'
1: $
    ^

Я просмотрел большинство постов, связанных с пакетом direct.label, но не могу понять, что я делаю неправильно.

Вот воспроизведение проблемы:

library(ggplot2)
library(directlabels)

data <- data.frame(X= c("A","B","C","D","X","Y","S","P","L","W"), Y=rnorm(10), Z=rnorm(10))
data$X <- as.character(data$X)
graph <- ggplot(data, aes(data$Y,data$Z))
t2<-theme(                              
        axis.title.x = element_text(face="bold", color="black", size=15),
        axis.title.y = element_text(face="bold", color="black", size=15),
        plot.title = element_text(face="bold", color = "black", size=12),
        axis.text.x = element_text(size=15),
        axis.text.y = element_text(size=15)
)
graph <- graph + geom_point(aes(colour=data$X), size=3) + geom_smooth(method="lm", se=F, size=0.5) +
        xlab("Y") + ylab("Z") +
        geom_vline(xintercept=mean(data$Y), color="red", size=1, linetype=2) + theme_bw() + t2 +
        geom_text(x=740,y=105, label="Avg", size=4.5); graph

direct.label.ggplot(graph)

1 ответ

Удалил data$Yи т. д. (согласно предложению Аосмита) и определены meanY перед ggplot звонки.

library(ggplot2)
library(directlabels)

data <- data.frame(X= c("A","B","C","D","X","Y","S","P","L","W"),
                      Y=rnorm(10), Z=rnorm(10))
data$X <- as.character(data$X)
meanY <- mean(data$Y)

graph <- ggplot(data, aes(Y,Z))
t2<-theme(                              
  axis.title.x = element_text(face="bold", color="black", size=15),
  axis.title.y = element_text(face="bold", color="black", size=15),
  plot.title = element_text(face="bold", color = "black", size=12),
  axis.text.x = element_text(size=15),
  axis.text.y = element_text(size=15)
)
graph <- graph + geom_point(aes(colour=X), size=3) + 
  geom_smooth(method="lm", se=F, size=0.5) +
  xlab("Y") + ylab("Z") +
  geom_vline(xintercept=meanY, color="red", size=1, linetype=2) + 
  theme_bw() + t2 +
  geom_text(x=740,y=105, label="Avg", size=4.5); 

print(graph)

direct.label.ggplot(graph)

Выдает это без ошибок или предупреждений:

Другие вопросы по тегам