为平均值、平均值和x2B添加行;sd和R中多因子散点图的平均值-sd
我有表格的数据为平均值、平均值和x2B添加行;sd和R中多因子散点图的平均值-sd,r,ggplot2,R,Ggplot2,我有表格的数据 cvar1 cvar1 numvar a x 0.1 a y 0.2 b x 0.15 b y 0.25 也就是说,两个分类变量和一个数值变量 使用ggplot2,我可以通过qplot(y=numvar,x=interaction(cvar1,cvar2))得到一个很好的散点图,该散点图绘制了cv1和cv2的每个组合的数据。这给了我几列类似这样的观点: 对于这些列中的每一列,我想添加一条表示该
cvar1 cvar1 numvar
a x 0.1
a y 0.2
b x 0.15
b y 0.25
也就是说,两个分类变量和一个数值变量
使用ggplot2,我可以通过qplot(y=numvar,x=interaction(cvar1,cvar2))得到一个很好的散点图,该散点图绘制了cv1
和cv2
的每个组合的数据。这给了我几列类似这样的观点:
对于这些列中的每一列,我想添加一条表示该列中数据点平均值的小水平线。平均值+sd和平均值-sd有一条类似的小水平线。(有点像巴斯德化的方框图,但所有点都可见,并使用平均值和sd而不是中值和IQR。)提前感谢 您可以创建一个表格,其中包含每组点的平均值和平均值+/-sd。然后,您可以使用
geom_segment()
绘制线
首先,我创建一些示例数据:
set.seed(1245)
data <- data.frame(cvar1 = rep(letters[1:2], each = 12),
cvar2 = rep(letters[25:26], times = 12),
numvar = runif(2*12))
这三行执行以下操作:首先,将数据拆分为多个组,然后为每个组计算三个所需的值。最后,数据被转换为长格式,这是ggplot()
所需要的。(也许您更熟悉melt()
,它的功能与gather()
基本相同)
最后,这将创建绘图:
gplot(data) + geom_point(aes(x = interaction(cvar1, cvar2), y = numvar)) +
geom_segment(data = summ,
aes(x = as.numeric(interaction(cvar1, cvar2)) - .5,
xend = as.numeric(interaction(cvar1, cvar2)) + .5,
y = value, yend = value, colour = variable))
你可能不会想要这些颜色。我只是添加了它们以使示例更加清晰
geom_segments()
需要指定每条线的起点和终点坐标。由于交互作用(cvar1、cvar2)是一个因素,因此需要将其转换为数值,然后才能对其进行运算。我在交互(cvar1,cvar2)
中加上和减去0.5,这使得行非常宽。选择较小的值将使线条变短。您可以创建一个表格,其中包含每组点的平均值和平均值+/-sd。然后,您可以使用geom_segment()
绘制线
首先,我创建一些示例数据:
set.seed(1245)
data <- data.frame(cvar1 = rep(letters[1:2], each = 12),
cvar2 = rep(letters[25:26], times = 12),
numvar = runif(2*12))
这三行执行以下操作:首先,将数据拆分为多个组,然后为每个组计算三个所需的值。最后,数据被转换为长格式,这是ggplot()
所需要的。(也许您更熟悉melt()
,它的功能与gather()
基本相同)
最后,这将创建绘图:
gplot(data) + geom_point(aes(x = interaction(cvar1, cvar2), y = numvar)) +
geom_segment(data = summ,
aes(x = as.numeric(interaction(cvar1, cvar2)) - .5,
xend = as.numeric(interaction(cvar1, cvar2)) + .5,
y = value, yend = value, colour = variable))
你可能不会想要这些颜色。我只是添加了它们以使示例更加清晰
geom_segments()
需要指定每条线的起点和终点坐标。由于交互作用(cvar1、cvar2)是一个因素,因此需要将其转换为数值,然后才能对其进行运算。我在交互(cvar1,cvar2)
中加上和减去0.5,这使得行非常宽。选择一个较小的值将使行变短。请参见base
中的abline
,例如,我不认为abline
(至少在我使用它时)会有什么帮助,因为我有多个列需要添加行。另外,abline
甚至可以使用ggplot2吗?明白了。然后,所需的base
函数是segments
;我不知道ggplot2
中的等价物是什么,因此将此作为一个例子comment@BenS. ggplot2
中有函数geom\u abline
。您可能还想查看geom\u vline
和geom\u hline
。请参阅base
中的abline
,例如,我不知道abline
有什么帮助,至少在我使用它时是这样,因为我有多个列需要添加行。另外,abline
甚至可以使用ggplot2吗?明白了。然后,所需的base
函数是segments
;我不知道ggplot2
中的等价物是什么,因此将此作为一个例子comment@BenS. ggplot2
中有函数geom\u abline
。您可能还想看看geom\u vline
和geom\u hline
。非常感谢。顺便问一下%>%代表什么?不客气。是管道操作员x%>%f
只是另一种书写f(x)
的方式。可以在dpylr
和magrittr
软件包中找到它。有关更多信息,请参阅。非常感谢。顺便问一下%>%代表什么?不客气。是管道操作员x%>%f
只是另一种书写f(x)
的方式。可以在dpylr
和magrittr
软件包中找到它。有关更多信息,请参阅。