Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中的x轴上绘制两个分类变量的散点图_R_Plot_Scatter Plot_Categorical Data - Fatal编程技术网

如何在R中的x轴上绘制两个分类变量的散点图

如何在R中的x轴上绘制两个分类变量的散点图,r,plot,scatter-plot,categorical-data,R,Plot,Scatter Plot,Categorical Data,我试图在R中做一个散点图,在x轴上有两个分类变量。对于箱线图,我知道如何做到这一点(请参阅下面代码的第一部分),但不知何故,我无法让它用于散点图。我尝试过几种方法,但当我绘制点时,它们总是重叠,不再显示第二个分类变量。Jitter也不起作用,因为我希望我的类别能够聚集在一起,而不是随机分布。有人知道怎么做吗?在下面,您可以找到一些示例数据和我尝试过的一些图表,包括注释。第一张图给了我一些类似于我想要的东西,但是用箱线图代替散点图。第二个图给出了一个散点图(人为地为第二个分类变量创建数字),但随后

我试图在R中做一个散点图,在x轴上有两个分类变量。对于箱线图,我知道如何做到这一点(请参阅下面代码的第一部分),但不知何故,我无法让它用于散点图。我尝试过几种方法,但当我绘制点时,它们总是重叠,不再显示第二个分类变量。Jitter也不起作用,因为我希望我的类别能够聚集在一起,而不是随机分布。有人知道怎么做吗?在下面,您可以找到一些示例数据和我尝试过的一些图表,包括注释。第一张图给了我一些类似于我想要的东西,但是用箱线图代替散点图。第二个图给出了一个散点图(人为地为第二个分类变量创建数字),但随后我松开了第二个分类变量的标签,它在一个空间中绘制了两次

为了使它更复杂,我还想显示一条包含所有散点图的平均值线。类似于在中所做的事情。我如何添加这个

谢谢你的帮助

time = c(rep('t1',12),rep('t2',12))
Origin =  c(rep('I1B',4),rep('I1C',4),rep('J4A',4),rep('I1B',4),rep('I1C',4),rep('J4A',4))
LB_FR = runif(24)

df = data.frame(time,Origin,LB_FR)

#does not work with geom_point
ggplot(df, aes(x = time, y = LB_FR, fill = Origin)) + geom_boxplot() + ggtitle('LB_FR')

#create df_2 with numbers instead of categories for Origin
df_2 = df
for (r in 1:nrow(df)){
  if (df$Origin[r] == 'I1B') df_2[r,'OriginNr'] = 1
  if (df$Origin[r] == 'I1C') df_2[r,'OriginNr'] = 2
  if (df$Origin[r] == 'J4A') df_2[r,'OriginNr'] = 3
}

# indices for time
t1 = df_2$time=="t1"
t2 = df_2$time=="t2"

plot(df_2$OriginNr,df$LB_FR, 
     xlim = c(0,4), ylim = c(0,1), bty = 'n',
     main = 'LB_FR', ylab = 'Fraction remaining', xlab = 'Origin', type = 'n')
points(df_2$OriginNr[t1],df_2$LB_FR[t1],col='red')
points(df_2$OriginNr[t2],df_2$LB_FR[t2],col='blue')
legend(0.1,0.9,legend=c('month 0-6','month 6-12'),pch=1,col=c('red','blue'),bty='n',cex=1.2)
geom_箱线图的默认“位置”为减淡位置。您也可以使用
geom_点
来模拟这一点:

ggplot(df, aes(x = time, y = LB_FR, color = Origin)) + 
    geom_point(position = position_dodge(width = 0.4))


我建议你把问题放在重点上:不要“让你的问题变得更复杂”,而要问一个新问题来表达你的意思。

非常感谢Gregor!这正是我想要的。我会单独问第二个问题,如果我不能让它工作,我会先尝试多一点。