我对R还是很陌生,遇到了无法解决的绘图问题。

我有一个看起来像这样的数据框(尽管更大):

df <- data.frame(Treatment= rep(c("A", "B", "C"), each = 6),
                 LocA=sample(1:100, 18),
                 LocB=sample(1:100, 18),
                 LocC=sample(1:100, 18))

我想要的点状图看起来像是在Excel中生成的this one。这正是我想要的格式:每个位置并排放置的每个点的点状图,在一个图形上同时包含多个位置的数据。 (对于无法在此处发布图片,深表歉意;发布图片需要10点声望。)

绘制每个位置的图,并用颜色标记点,等等,这是没有问题的:
ggplot(data = df, aes(x=Treatment, y=LocA, color = Treatment)) + geom_point()

但我不知道如何将位置B和C添加到同一张图中。

任何建议将不胜感激!

最佳答案

正如几个人提到的那样,您需要“融化”数据,使其变成“长”格式。

library(reshape2)
df_melted <- melt(df, id.vars=c("Treatment"))
colnames(df_melted)[2] <- "Location"

在ggplot行话中,可以通过“躲避”来实现具有不同组(如并排处理)的处理。通常,对于条形图之类的东西,您只能说position="dodge",但geom_point似乎需要更多手动说明:
ggplot(data=df_melted, aes(x=Location, y=value, color=Treatment)) +
  geom_point(position=position_dodge(width=0.3))

10-05 19:19