0

ggplot のスケール シェイプ マニュアルを使用して、北、南、西にそれぞれ対応する 3 つの異なるタイプの工場 (正方形、三角形、円) に対して異なる値を作成しました。地域ごとに 3 つの異なるデータ フレームを作成せずに、凡例に北/南/西のラベルを表示することは可能ですか? これらのラベルを元のデータ フレームに追加できますか?

プロット用のデータ フレームが 1 つあり (ggplot2 本で推奨されているように)、以下のコードでは、デフォルトの凡例にデータ フレームのすべての行がリストされますが、これは反復的であり、必要なものではありません。

基本的に、プロットでこれらの領域にラベルを付ける最良の方法を知りたいです。1 つのデータ フレームを維持したい唯一の理由は、データ フレームを切り替えるだけでコードを何度も簡単に使用できるためです (ggplot2 本で言及されている 1 つの df の利点)。

問題の一部は、スケール形状マニュアルを使用して各ポイントに個別に値を割り当てていることだと思います。データ フレームに North/South/West ラベルを配置し、スケール シェイプ マニュアルを変更する必要がありますか? もしそうなら、これを達成するための最良の方法は何ですか?

私の質問が不明な場合はお知らせください。私のコードは以下にあり、私のプロットをそのまま複製します。ありがとう。

#Data frame
points <- c(3,5,4,7,12)
bars <- c(.8,1.2,1.4,2.1,4)
points_df<-data.frame(points) 
row.names(points_df) <- c( "Factory 1","Factory 2","Factory 3","Factory 4","Factory 5" )

df<-data.frame(Output=points,Errors=bars,lev.names= rownames(points_df))
df$lev.names<-factor(df$lev.names,levels=df$lev.names[order(df$Output)])

# GGPLOT #
library(ggplot2)
library(scales)

p2 <- ggplot(df,aes(lev.names,Output,shape=lev.names))

p2 <- p2 +geom_errorbar(aes(ymin=Output-Errors, ymax=Output+Errors), width=0,color="gray40", lty=1, size=0) 

p2 <- p2 + geom_point(aes(size=2)) 

p2 <- p2  + scale_shape_manual(values=c(6,7,6,1,1))

p2 <- p2 + theme_bw() + xlab(" ") + ylab("Output")

p2 <- p2 + opts(title = expression("Production"))
p2 <- p2+ coord_flip()
print(p2)
4

1 に答える 1

1

はい、場所を data.frame に入れて、それを aes マッピングで使用します。

df$location <- c("North","South","North","West","West")

p2 <- ggplot(df,aes(lev.names,Output,shape=location)) +
  geom_errorbar(aes(ymin=Output-Errors, ymax=Output+Errors), 
                width=0,color="gray40", lty=1, size=0) +
  geom_point(size=3) + 
  theme_bw() + xlab(" ") + ylab("Output") +
  ggtitle(expression("Production")) +
  coord_flip()
print(p2)

私はまた、いくつかの他のものを修正しました (例えば、opts非推奨であり、マップしたくないsizeが、それを設定したい)。

于 2013-07-11T19:26:35.377 に答える