将多个ggplots合并为一个图,并将其保存在Python中

时间:2019-01-09 17:45:46

标签: python ggplot2

我的代码完成了7个图。但是我不知道如何将它们组合成一个图并将其另存为PNG文件。

在R中,我使用了grid.arrange()函数,但在Python中没有看到等效的功能。

由于一致性原因,我想避免使用除ggplot2之外的绘图软件包。因此,如果我可以合并并保存它们,而不是与其他新软件包一起进行绘制,那将是很棒的事情。

谢谢

p1 = ggplot.ggplot(dt, ggplot.aes(x = "prob",
                                  colour = "target"))+\
ggplot.geom_density(alpha=1,size=3) +\
ggplot.xlab("Pr(target == 1)") +\
ggplot.scale_x_continuous(limits=[min(dt.prob),max(dt.prob)])

p2 = ggplot.ggplot(dt, ggplot.aes(x = "prob",
                                  colour = "target",
                                  fill= "target")) +\
ggplot.geom_histogram(position="identity", binwidth=0.05, alpha=0.5) +\
ggplot.scale_x_continuous(limits=[min(dt.prob),max(dt.prob)]) +\
ggplot.xlab("Pr(target == 1)")

p3 = ggplot.ggplot(dt_aggregated, 
               ggplot.aes(x = "coverage", 
                          y = "ppv", 
                          colour = "group", 
                          shape = "group")) +\
ggplot.geom_line(size=5) +\
ggplot.ylab("positive predictive value")

model = sm.GLM(outcome, prob, family=sm.families.Binomial())
smooth = model.fit().predict()
dt["smooth"] = list(smooth)

p4 = ggplot.ggplot(dt, ggplot.aes(x ="prob")) +\
  ggplot.geom_point(ggplot.aes(y = "outcome"),position="jitter",alpha = 0.01) +\
  ggplot.geom_line(ggplot.aes(y = "smooth"), color = "darkblue", size = 1) +\
  ggplot.ggtitle("") +\
  ggplot.xlab("Pr(target == 1)") +\
  ggplot.ylab("target") +\
  ggplot.scale_x_continuous(limits=[min(dt.prob),max(dt.prob)])

p5 = wv_ROCPlot(dt,prob,outcome,returnScores=False)

p6 = gainsPlot(best_model=best_model,validation=False,hex_test=hex_test)

p7 = ggplot.ggplot(dt, ggplot.aes(x = "prob", colour = "target", fill = "target")) +\
    ggplot.geom_density(alpha = 1,position = "fill") +\
    ggplot.geom_line(size=2) +\
    ggplot.xlab("Pr(target == 1)") +\
    ggplot.scale_x_continuous(limits=[min(prob),max(prob)]) +\
    ggplot.ylab("proportional density")

1 个答案:

答案 0 :(得分:0)

您可以使用多图功能。 例如, multiplot(p1,p2,p3,p4,p5,p6,p7,p8,p9,cols = 3)