我正在做一个项目,在该项目中我有多个响应变量并希望显示有序的毛毛虫图。这对于基本的 R 绘图功能来说相当简单

#generate random data frame
set.seed(42)
my_df<-data.frame(x=rnorm(100), y=runif(100,-2,2), z=rpois(100, 10))

#3 panels of plots
par(mfrow=c(1,3))

#note the abline to show an axis at y=0
sapply(c("x", "y", "z"), function(i){ plot(sort(my_df[[i]])); abline(0,0)})

但我不知道如何用 ggplot2 做到这一点。要将三个面板放在一起,我知道我必须融化数据框,但是……如何通过变量进行排序并稍后使用 0 轴进行绘图?到目前为止,我所拥有的只是...
melt_df<-melt(my_df)

qplot(1:100, value, data=melt_df, geom="point",facets=~variable)+theme_bw(base_size=16)

最佳答案

建立 jebyrnes 答案 - 您可以将 y 轴设置为将自由比例作为 facet_wrap 中的参数。我们可以使用 geom_hline() 添加一条水平线:

ggplot(melt_df, aes(1:100, value)) + geom_point() +
    facet_wrap(~ variable, ncol = 3, scales = "free_y") +
    geom_hline(aes(intercept = 0), linetype = 2) +
    theme_bw(base_size = 16)

您可以通过使用 stat_qq() 获得等效结果,并避免事先使用 ddply 进行排序。不同之处在于我们只需要将 sample 参数传递给 aes :
ggplot(melt_df, aes(sample = value)) + geom_point(stat = "qq") +
    facet_wrap(~ variable, ncol = 3, scales = "free_y") +
    geom_hline(aes(intercept = 0), linetype = 2) +
    theme_bw(base_size = 16)

关于r - ggplot2 中的毛毛虫图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5463471/

10-16 09:06