在ggplot2中编程联合图例以使用分组变量进行多元回归

时间:2019-05-26 17:48:49

标签: r ggplot2 legend

我有四个回归图,它们不仅基于x和y变量,还按分组变量z(v_187_corr)进行分组。因此,图例包含了存储在v_187中的所有组。现在,我想将我所有的4张图放在2x2窗口中,并用所有组名放置一个通用图例。

(我找到了一些示例,但是它们与我的示例仍然有很大的不同)。

local num = io.read()
local lin = io.read()
local i=0
for w in lin:gmatch("%d+") do
    i=i+1
    print(i,w)
end

1 个答案:

答案 0 :(得分:1)

假设您的数据如下所示:

df.hlm_cc_select <- data.frame(zZufri = runif(10,0,1),
                               zmeans_levelsums = runif(10,0,1),
                               zagree_group_withinmeet_levelrat = runif(10,0,1),
                               zmean.aggr.prb_sd = runif(10,0,1),
                               zPssg_sd = runif(10,0,1),
                               v_187_corr = runif(10,0,1))

您可以使用tidyr包(在其他选项中,例如reshape2::meltdata.table::melt)将所有变量收集到一列中(我们将其称为value)。

在此过程中,必须使用zZufri排除v_187_corr(x轴?)和颜色变量-zZufri, -v_187_corrkey列指示与每个值关联的变量。

df <- gather(df.hlm_cc_select,key="key",value="value",-zZufri, -v_187_corr)

然后使用ggplot您可以添加facet_wrap(~key),即为key中的每个唯一值创建一个构面图。

ggplot(df,aes(x=value,y=zZufri,col=v_187_corr))+
  geom_jitter()+
  scale_color_viridis(discrete = TRUE, option = "A")+
  scale_fill_viridis(discrete = TRUE) +
  theme_dark() +
  theme(axis.line.x = element_line(colour = 'black', size=0.5, linetype='solid'),
        axis.line.y = element_line(colour = 'black', size=0.5, linetype='solid')) +
  inherit.aes = FALSE, se = FALSE)+
  geom_smooth(method=lm, color="black")+
  facet_wrap(~key)

所有地块都只有一个图例。