我正在尝试使用ggplot2
绘制图表所以我有以下数据框:
iter se perf name
1 V1 0.6463573 12.8 e
2 V2 0.3265986 16.8 e
3 V3 0.2333333 19.1 e
4 V4 0.1000000 19.9 e
5 V5 0.0000000 20.0 e
6 V1 0.7483315 12.6 f
7 V2 0.6333333 16.3 f
8 V3 0.6798693 18.8 f
9 V4 0.2236068 19.5 f
10 V5 0.1000000 19.9 f
我试图以与此page类似的格式绘制它(在线图下)。
所以这是绘图的代码:
pd <- position_dodge(.1)
ggplot(df, aes(x=iter, y=perf, colour=name)) +
geom_errorbar(aes(ymin=perf-se, ymax=perf+se), width=.1, position=pd) +
geom_line(position=pd) +
geom_point(position=pd)+
ylim(0, 20)
并且它运行良好:,除了我想要连接这些点。我尝试将group=1
或group=name
添加到此部分aes(x=iter, y=perf, colour=name)
,但它没有帮助。
我也收到了这些警告:
ymax not defined: adjusting position using y instead
ymax not defined: adjusting position using y instead
geom_path: Each group consist of only one observation. Do you need to adjust the group aesthetic?
在互联网上查看后,我发现前两个是由于position_dodge,但我认为是因为ggplot,第三个实际上是因为我断开连接点。
任何想法如何连接它们?
答案 0 :(得分:29)
您需要调整群体美感,替换:
geom_line(position=pd)
通过
geom_line(position=pd,aes(group=name))
答案 1 :(得分:11)
使用is.factor(x)
检查数据类型是否为因子,如果是TRUE
,则使用as.integer
函数。