我喜欢共享水平轴但具有不同垂直轴的图。如果我希望它们使用相同的facet_grid
,那么使用geom
会很容易,但它们有不同的geoms。
我到目前为止最好的facet_grid
以上:
library(gridExtra)
library(reshape2)
n = 10
df <- data.frame(X = seq.int(n),
Count = sample(1:50, size=n),
Y = sample(1:10000000, size=n))
long <- melt(df, id="X")
long$Y <- with(long, ifelse(variable=="Y", value, NA))
long$Count <- with(long, ifelse(variable=="Count", value, NA))
long$variable <- factor(long$variable, levels = c("Y", "Count"))
ggplot(long) +
geom_point(aes(x=X, y=Y)) +
geom_bar(aes(x=X,y=Count), stat="identity") +
facet_grid(variable ~ ., scales="free_y") +
ylab("")
在此之前,我正在这样做(这可能导致轴对齐错误并且通常非常脆弱):
pointsPlot <- ggplot(df) + geom_point(aes(x=X, y=Y))
barPlot <- ggplot(df) + geom_bar(aes(x=X, y=Count), stat="identity")
grid.arrange(pointsPlot, barPlot, ncol=1)
有没有人有更少的hacky方式建议?