我正在使用ggplot2绘制回归线。我还想用置信区间绘制出平均点,以显示它是否显着。例如:
library("ggplot2")
library("gridExtra")
library("epicalc")
options(digits=2)
subset1 <- subset(na.omit(iris), Species == "setosa")
subset2 <- subset(na.omit(iris), Species == "versicolor")
subset3 <- subset(na.omit(iris), Species == "virginica")
meanx <- c(ci(subset1$Sepal.Length)$mean,
ci(subset2$Sepal.Length)$mean,
ci(subset3$Sepal.Length)$mean)
meany <- c(ci(subset1$Sepal.Width)$mean,
ci(subset2$Sepal.Width)$mean,
ci(subset3$Sepal.Width)$mean)
Species <- factor(c("setosa", "versicolor", "virginica"))
meanmatrix <- as.data.frame(cbind(Species, meanx, meany))
lowerx <- c(ci(subset1$Sepal.Length)$lower95ci,
ci(subset2$Sepal.Length)$lower95ci,
ci(subset3$Sepal.Length)$lower95ci)
upperx <- c(ci(subset1$Sepal.Length)$upper95ci,
ci(subset2$Sepal.Length)$upper95ci,
ci(subset3$Sepal.Length)$upper95ci)
lowery <- c(ci(subset1$Sepal.Width)$lower95ci,
ci(subset2$Sepal.Width)$lower95ci,
ci(subset3$Sepal.Width)$lower95ci)
uppery <- c(ci(subset1$Sepal.Width)$upper95ci,
ci(subset2$Sepal.Width)$upper95ci,
ci(subset3$Sepal.Width)$upper95ci)
px <- ggplot(data = meanmatrix, geom = 'blank',
aes(y = meanx, x = meany,color = factor(Species)))
pbx <- px +
geom_point(size = 5) +
geom_errorbar(aes(ymin=lowerx, ymax=upperx), colour="black", width=.1) +
scale_color_manual(values = c("#00FFFF", "#FFFF00", "#00FF00")) +
theme(panel.background = element_rect(fill='white', colour='red'),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.position = "none") +
coord_flip()
py <- ggplot(data = meanmatrix, geom = 'blank',
aes(y = meany, x = meany,color = factor(Species)))
pby <- py +
geom_point(size = 5) +
geom_errorbar(aes(ymin=lowery, ymax=uppery), colour="black", width=.1) +
scale_color_manual(values = c("#00FFFF", "#FFFF00", "#00FF00")) +
theme(panel.background = element_rect(fill='white', colour='red'),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.position = "none")
p <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width,
color = factor(Species)))
p0 <- p +
scale_color_manual(values = c("#00FFFF", "#FFFF00", "#00FF00")) +
scale_linetype_manual(breaks = c("0","1"), values = c(1,2), labels = c("male", "female")) +
geom_smooth(method = "lm",se = FALSE, size = 1.2) +
theme(panel.background = element_rect(fill='white', colour='red'),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
legend.position = "none")
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrow=3, ncol=3)))
print(p0,vp = viewport(layout.pos.row = 1:2, layout.pos.col = 2:3))
print(pby,vp = viewport(layout.pos.row = 1:2, layout.pos.col = 1))
print(pbx,vp = viewport(layout.pos.row = 3, layout.pos.col = 2:3))
三个地块的比例不同。我怎样才能使它们具有通用性,以便我可以比较它们?感谢。
答案 0 :(得分:1)
与Ernest A.一样,您可以使用scale_x_continuous
和scale_y_continuous
手动更改x和y轴的比例。只需将breaks
参数设置为相同的值即可。
绘制图中的不确定条也可能更容易,或绘制包含95%置信区间的回归线。