r - 如何在R中的x轴上使用两个分类变量制作散点图

标签 r plot scatter-plot categorical-data

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

为了使它更复杂,我还想显示一 strip 有所有散点图的平均值的线。类似于 Categorical scatter plot with mean segments using ggplot2 in R 中所做的事情.我怎样才能添加这个?

感谢你的帮助!

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_boxplot 的默认“位置”是躲避位置。你可以用 geom_point 来模拟这个还有:

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

enter image description here

我建议让你的问题保持专注:不要“让你的问题变得更复杂”,而是针对平均线问题提出一个新问题。

关于r - 如何在R中的x轴上使用两个分类变量制作散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35946529/

相关文章:

r - 在 plot 中控制 xlim

regex - stringr 包中的 Perl 正则表达式

r - 在一系列日期中识别第三个星期五

c++ - 如何使用 FFTW3/QWT 绘制频谱?

r - 如何在 ggplot 函数中使用以数字开头的列名

matlab - 使用 MATLAB 绘制三元相图

r - 如何使用 R 格子 xyplot 根据数值阈值对点进行着色

python - 如何在 matplotlib 中制作 3D 散点图

Python pandas plot 散点日期时间错误

r - 执行双聚类(行和列)后如何在 heatmap.2 上添加 ColSideColors