R:ggplot,图例控制,使用比例\形状\手册和一个数据框

R:ggplot,图例控制,使用比例\形状\手册和一个数据框,r,ggplot2,R,Ggplot2,使用ggplot中的scale shape手册,我为三种不同类型的工厂(正方形、三角形和圆形)创建了不同的值,分别对应于北、南和西。图例中是否可以有北/南/西标签,而无需为每个区域创建三个不同的数据帧?我可以将这些标签添加到原始数据框中吗 我有一个用于绘图的数据框(如ggplot2手册所建议的),在下面的代码中,默认图例列出了数据框中的每一行,这是重复的,不是我想要的 基本上,我想知道在绘图中标记这些区域的最佳方法。我想要维护一个数据帧的唯一原因是,只需切换数据帧,代码就很容易反复使用(ggpl

使用ggplot中的scale shape手册,我为三种不同类型的工厂(正方形、三角形和圆形)创建了不同的值,分别对应于北、南和西。图例中是否可以有北/南/西标签,而无需为每个区域创建三个不同的数据帧?我可以将这些标签添加到原始数据框中吗

我有一个用于绘图的数据框(如ggplot2手册所建议的),在下面的代码中,默认图例列出了数据框中的每一行,这是重复的,不是我想要的

基本上,我想知道在绘图中标记这些区域的最佳方法。我想要维护一个数据帧的唯一原因是,只需切换数据帧,代码就很容易反复使用(ggplot2书中提到的一个df的好处)

我认为问题的一部分是我正在使用“缩放形状”手册为每个点分别指定值。我是否应该将北/南/西标签放在我的数据框中,并修改我的比例形状手册?如果是这样,实现这一目标的最佳方式是什么

如果我的问题不清楚,请告诉我。下面是我的代码,它复制了我的原图。谢谢

#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)
#数据帧

点是,将位置放在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)
df$位置