1

我需要绘制三个平均值 +- SE 的图,并在该图中添加一些额外的点。y 轴是数字,x 轴应该是分类的。一些额外的点在同一类别中具有相同的y值,因此要获得点偏移量,因此它们不会相互覆盖,我将类别更改为值5,10,15,然后使两个点重叠对于 5,x 值为 4.9 和 5.1。这很完美 - 但现在我需要在 x 轴上显示类别。

这是我的原始数据:

Island;Armean;SE;TLR3;TLR4
ST;4,166666667;0,477;1;1
FG;3,666666667;0,715;3;3
SN;1,666666667;0,333;3;2

TLR3 和 TLR4 保存我要绘制的附加点的值。

qplot(df$Island, df$Armean) + geom_errorbar(aes(x=df$Island, ymin=df$Armean-df$SE, ymax = df$Armean+df$SE), width = 0.25) + geom_point(aes(y=df$TLR3), color ="red") + geom_point(aes(y=df$TLR4), color ="blue") + theme_bw()

以上为我提供了我需要的情节,但除了我需要为 FG 偏移 3 点和为 ST 偏移 1 点。

在此处输入图像描述

我将数据集更改为:

Island;Armean;SE;TLR3;TLR4
5;4,166666667;0,477;NA;NA
10;3,666666667;0,715;NA;NA
15;1,666666667;0,333;3;2
4,92;NA;NA;1;NA
5,08;NA;NA;NA;1
9,92;NA;NA;3;NA
10,08;NA;NA;NA;3

哪个完美地抵消了这些点,但我不确定如何让旧类别回到 x 轴上?

我可以使用 jitter 代替上面的方法,但我希望这些点与中心线的距离相同,并且只有重叠的点才能被偏移。

在此处输入图像描述

4

1 回答 1

2

编辑:根据@Gregor 下面的评论,更改qplotggplot

应该足够简单,以便将您的旧类别放在 X 轴上。尝试这个:

ggplot(data=df,aes(Island,Armean)) +
  geom_errorbar(aes(x=Island, ymin=Armean-SE, ymax = Armean+SE), width = 0.25) + 
  geom_point(aes(y=TLR3), color ="red") + 
  geom_point(aes(y=TLR4), color ="blue") + theme_bw() + 
  scale_x_continuous(breaks=seq(from=5,to=15, by = 5), labels=c("FG","SN","ST"))

这给出了以下输出:

在此处输入图像描述

如果您不想手动添加标签,您可以通过在包含您想要的级别的数据框中添加另一列来执行此操作。看:

df <- read.csv(textConnection("Island;Armean;SE;TLR3;TLR4;Island.group
5;4,166666667;0,477;NA;NA;ST
10;3,666666667;0,715;NA;NA;FG
15;1,666666667;0,333;3;2;SN
4,92;NA;NA;1;NA;ST
5,08;NA;NA;NA;1;ST
9,92;NA;NA;3;NA;FG
10,08;NA;NA;NA;3;FG"),header=TRUE,dec=",",sep=";")


 ggplot(data=df,aes(Island,Armean)) +
  geom_errorbar(aes(x=Island, ymin=Armean-SE, ymax = Armean+SE), width = 0.25) + 
  geom_point(aes(y=TLR3), color ="red") + 
  geom_point(aes(y=TLR4), color ="blue") + theme_bw() + 
  scale_x_continuous(breaks=seq(from=5,to=15, by = 5), labels=levels(df$Island.group))

这给出了相同的确切输出:

在此处输入图像描述

于 2016-03-28T20:58:32.067 回答