我有这个数据集:
workdataset <- data.frame(dadedu=rep(c("ISCED 1 & 2", "ISCED 3 & 4", "ISCED 5 & 6"),each=2),
socialorigin=rep(c(1,0),times=3),
Level = rep(c("Below ISCED 1", "ISCED 1", "ISCED 2", "ISCED 3", "ISCED 4","ISCED 5", "ISCED 6"), each=6),
Prob = rnorm(42))
我制作了这个情节:
ggplot(workdataset, aes(x = Level, y = Prob, colour = dadedu)) +
geom_point(aes(group=dadedu, size=0.2)) + geom_line()
正如您在水平轴的每个类别中所看到的,有两个颜色相同的点通过一条线连接起来。不是这样的,我试着为每个类别有两条线,例如,两个红色点都与一条线相连,其他颜色也是如此。然后,用不同形状的点来区分类别中的两条线。
我一直在玩facet_grid,但我仍然不太熟悉ggplot2,而且我似乎无法理解它。
任何帮助都是非常感谢的。
谢谢,
编辑:对不起,我没有正确解释自己,但我会再试一次。因此,正如您在图中所看到的,水平轴中有几个类别( ISCED 1,ISCED 2,等等)。对于每个类别,现在有一个垂直线包含6个点(2个红色,2个绿色和2个蓝色)。1红色属于社会出身=1,另一红色等于社会本源= 0。我想要的不是一条6点的垂直线,而是两条每条3点的垂直线。一条垂直线是socialorigin=1,另一条是socialorigin=0,然后用一条线把垂直线1上的红点和垂直线2上的红点连接起来,以此类推。它适用于横轴中的所有类别( ISCED 1、ISCED 2等)。如果这还不清楚,我将尝试显示一个图像,以模仿我想要的。
希望这能让事情更清楚。
发布于 2015-11-29 13:23:48
编辑:我想就是这个?这需要一些黑客的工作,因为我们是用一条线连接躲避点。首先,让我们构建基本的地块:
p <- ggplot(workdataset, aes(x = Level, y = Prob, group = socialorigin, colour = dadedu)) +
geom_point(aes(shape = dadedu), position = position_dodge(width = 0.50))
现在,我们希望使用ggplot_build
来获取数据:
newdat <- ggplot_build(p)$data[[1]]
newdat
现在是x和y,组和颜色为我们的情节。我们需要根据形状、颜色和x的组合(这里由于躲避而四舍五入)获得一个新的var来分组:
newdat$group2 <- paste0(newdat$shape, newdat$colour, round(newdat$xmin))
然后把它添加到情节中:
p + geom_line(data = newdat,aes(x,y, group = group2), colour = newdat$colour)
先前的答覆如下:
我认为您需要为socialorigin
和dadedu
的组合创建一个新变量
workdataset$comb <- paste0(workdataset$dadedu, workdataset$socialorigin)
然后,我们可以使用它对线条进行分组,并使用socialorigin
生成点形状:
library(ggplot2)
ggplot(workdataset, aes(x = Level, y = Prob, colour = dadedu)) +
geom_point(aes(shape = factor(socialorigin)), size = 3) +
geom_line(aes(group = comb))
这意味着:
https://stackoverflow.com/questions/33988071
复制相似问题