我对几种不同的植物物种进行了2x2因子实验。我正好适当地绘制所有这些。
虚拟数据:
Data <- data.frame(
species = rep(letters[1:4], each = 4),
F1 = rep(letters[25:26], times = 8),
F2 = rep(letters[11:12], each = 2, times = 4),
mean = runif(16, min=0, max=1),
se = (runif(16, min=0, max=1))/10)
我希望物种名称在X轴上,4个独立的点(+ SE栏),每个因子2。一个因素将填补或空,另一个将是以下是我到目前为止:
pd <- position_dodge(0.5)
ggplot(Data, aes(species, mean, fill = factor(F1), shape = factor(F2))) +
geom_point(size = 3, position = pd) +
geom_errorbar(aes(ymin=mean-se, ymax=mean+se), position = pd)
然而,实际上这并不是因子1是填充或未填充的形状。我跟着mtcars中的几个例子,我已经工作得很好。这里出了什么问题?
对于它的价值,颜色工作正常,但我需要它填充或空,所以似乎我可能使用填充错误?
答案 0 :(得分:2)
fill
美学用于填充颜色条。积分,是&#34;固体&#34;或不。
我不知道用一个因素确定点是否稳定来构建情节的一步解决方案。然而,建立这样的情节并不太难。
让我们从构建Data
library(ggplot2)
Data <- data.frame(species = rep(letters[1:4], each = 4),
F1 = rep(letters[25:26], times = 8),
F2 = rep(letters[11:12], each = 2, times = 4),
mean = runif(16, min=0, max=1),
se = (runif(16, min=0, max=1))/10)
向Data
和F1
F2
添加一列到interaction()
。您可以使用paste
函数,但我会使用paste0(...)
(paste(..., sep = "")
相当于factor
)来构建列并将其设置为{{1 }}
Data$F1F2 <- factor(with(Data, paste0("F1 = ", F1, "; F2 = ", F2)))
levels(Data$F1F2)
现在,在ggplot
对象中使用scale_shape_manual
将特定点字符映射到Data$F1F2
的级别。在此示例中,点字符c(1, 2, 16, 17)
对应于非实心圆,非实心三角形,实心圆和实心三角形。
pd <- position_dodge(0.5)
ggplot(Data) +
aes(species, mean, color = species, shape = F1F2) +
geom_point(size = 3, position = pd) +
geom_errorbar(aes(ymin = mean - se, ymax = mean + se), position = pd) +
scale_shape_manual(name = "Factors",
values = c(1, 2, 16, 17))
结果图形如下。我添加了一种颜色审美,以帮助我按species
查看分组。