4

私の問題は、ggplot に geom_text() を追加するときに関連しており、エラーが発生します。以下のリンクを参照しましたが、問題を特定できませんでした。

訪問した質問: ggmap と geom_point を使用すると geom_text が機能しない

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

回答する場合は、このエラーが発生した理由について簡単な説明を残してください。感謝します。

ありがとうございました。

4

1 に答える 1

3

1 つの問題は、行頭の + 記号をgeom_text. + 記号を前の行の末尾に移動します。しかし、まだエラーが生成されます。問題は、2 つのデータ フレームの共通の変数名にあると思います。dataaesコマンドを から に移動し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")

ここに画像の説明を入力

于 2014-04-11T04:55:31.757 に答える