R:ggplot,图例控制,使用比例\形状\手册和一个数据框
使用ggplot中的scale shape手册,我为三种不同类型的工厂(正方形、三角形和圆形)创建了不同的值,分别对应于北、南和西。图例中是否可以有北/南/西标签,而无需为每个区域创建三个不同的数据帧?我可以将这些标签添加到原始数据框中吗 我有一个用于绘图的数据框(如ggplot2手册所建议的),在下面的代码中,默认图例列出了数据框中的每一行,这是重复的,不是我想要的 基本上,我想知道在绘图中标记这些区域的最佳方法。我想要维护一个数据帧的唯一原因是,只需切换数据帧,代码就很容易反复使用(ggplot2书中提到的一个df的好处) 我认为问题的一部分是我正在使用“缩放形状”手册为每个点分别指定值。我是否应该将北/南/西标签放在我的数据框中,并修改我的比例形状手册?如果是这样,实现这一目标的最佳方式是什么 如果我的问题不清楚,请告诉我。下面是我的代码,它复制了我的原图。谢谢R:ggplot,图例控制,使用比例\形状\手册和一个数据框,r,ggplot2,R,Ggplot2,使用ggplot中的scale shape手册,我为三种不同类型的工厂(正方形、三角形和圆形)创建了不同的值,分别对应于北、南和西。图例中是否可以有北/南/西标签,而无需为每个区域创建三个不同的数据帧?我可以将这些标签添加到原始数据框中吗 我有一个用于绘图的数据框(如ggplot2手册所建议的),在下面的代码中,默认图例列出了数据框中的每一行,这是重复的,不是我想要的 基本上,我想知道在绘图中标记这些区域的最佳方法。我想要维护一个数据帧的唯一原因是,只需切换数据帧,代码就很容易反复使用(ggpl
#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$位置