我使用facet_wrap并排显示两个图形,并希望执行以下操作:
我用这个链接来完成#1,但我不能与#2结合使用
ggplot2 - create different geom_path objects in facets
我创建了以下数据框
square1 = data.frame(x=c(.....),y=c(.....),z=a)
square2 = data.frame(x=c(.....),y=c(.....),z=b)
df1 = rbind(square1,square2) # 10*3 data frame that defines the dimensions of the squares to draw with z taking value of a or b
df2 = data.frame(x=c(..),z=c(a,b)) # 2*2 data frame with z taking value of a or b
以下代码设置了方面,一切正常:
RE <- ggplot(data, aes())
RE <- RE + geom_point(aes())
RE <- RE + xlab() + ylab() + ggtitle()
RE <- RE + coord_cartesian()
RE <- RE + scale_colour_brewer()
RE <- RE + theme_bw()
RE <- facet_wrap(~ v1 + v2, ncol=2)
但是运行此代码会导致以下错误:
RE <- RE + geom_path(aes(x = x, y = y), data = df1)
RE <- RE + geom_vline(aes(xintercept = x), data = df2)
面板$ x_scales [[this_panel $ SCALE_X]]出错:递归索引 在第4级失败
请注意,我可以运行一行或其他行代码,但不能同时运行。
答案 0 :(得分:0)
您尚未提供任何数据,因此我按照您之前发布的模式创建了一些数据。请注意,数据框包含点和路径的x
和y
坐标;变量facet
告诉ggplot在哪个面板中绘制点和路径;和变量vline
给出垂直线的位置(在v1面板中,vline截距在x = 2;在v2面板中,vline截距在x = 3)。
library(ggplot2)
square1 <- data.frame(x = c(1, 5, 5, 1, 1),
y = c(1, 1, 5, 5, 1),
facet = "v1",
vline = 2)
square2 <- data.frame(x = c(2, 4, 4, 2, 2),
y = c(2, 2, 4, 4, 2),
facet = "v2",
vline = 3)
df1 = rbind(square1,square2)
df1
ggplot(df1, aes(x, y)) +
geom_point(colour = "red", size = 5) +
geom_path(colour = "red", size = 2) +
geom_vline(aes(xintercept = vline),colour = "blue", size = 2) +
theme_bw() +
facet_wrap(~ facet, ncol=2)