проблема при добавлении geom_text в ggplot2 при построении графика ggmap

моя проблема связана с тем, что когда мы добавляем geom_text() в наш ggplot, это дает мне ошибку. Я ссылался на приведенные ниже ссылки, но не смог понять свою проблему.

Посещенные вопросы: geom_text не работает при использовании ggmap и geom_point< /а>

library(ggplot2)
library(maps)
library(Hmisc)
library(stringi)
data(state)
states <- map_data("state")
colnames(states)[5] <- "State"
states$State <- stri_trans_totitle(states$State)
df <- data.frame(state.x77,
              State = state.name,
              Abbrev = state.abb,
              Region = state.region,
              Division = state.division
)  

df2 <- merge(states,df,by="State")
df2 <- df2[order(df2$order),]
mid_range <- function(x) mean(range(x,na.rm=TRUE))
centres <- ddply(df2, .(Abbrev),
             colwise(mid_range,.(lat,long,Population)))

gg <- function(Cols) {
df2$Cols <- df2[,Cols]
ggplot(df2, aes(long,lat,fill=Cols))+
geom_polygon(aes(group=group)) 
#+ geom_text(aes(x=long,y=lat,label=Abbrev),data = centres,size=4)
}

С приведенным выше кодом я получаю следующий вывод:

gg("Population")

введите здесь описание изображения

Затем, если я раскомментирую функцию geom_text() и перезапущу код, я получу следующую ошибку:

Error in +geom_text(aes(x = long, y = lat, label = Abbrev), data = centres,  : 
invalid argument to unary operator

Если вы решите ответить, оставьте краткое объяснение, почему возникает эта ошибка. Был бы признателен.

Спасибо.


person Aks    schedule 11.04.2014    source источник


Ответы (1)


Одна проблема связана со знаком + в начале строки с geom_text. Переместите знак + в конец предыдущей строки. Но ошибка все равно выдается. Я думаю, проблема заключается в общих именах переменных в двух фреймах данных. Переместите команды data и aes из ggplot в geom_polygon.

library(ggplot2)
library(plyr)
library(maps)
library(Hmisc)
library(stringi)
data(state)
states <- map_data("state")
colnames(states)[5] <- "State"
states$State <- stri_trans_totitle(states$State)
df <- data.frame(state.x77,
              State = state.name,
              Abbrev = state.abb,
              Region = state.region,
              Division = state.division
)  

df2 <- merge(states,df,by="State")
df2 <- df2[order(df2$order),]
mid_range <- function(x) mean(range(x,na.rm=TRUE))
centres <- ddply(df2, .(Abbrev),
             colwise(mid_range,.(lat,long,Population)))


gg <- function(Cols) {
df2$Cols <- df2[,Cols]
ggplot()+                                                          # Changes made here
 geom_polygon(data = df2, aes(long,lat,fill=Cols,group=group)) +   # and here.
 geom_text(aes(x=long,y=lat,label=Abbrev), data = centres, size=4)
}

gg("Population")

введите здесь описание изображения

person Sandy Muspratt    schedule 11.04.2014