如何并排绘制密度图

时间:2020-08-29 15:16:38

标签: python matplotlib seaborn density-plot

我想在Python上绘制多个密度图,不是作为一个图,而是作为一个窗口下的多个图。我该如何使用matplotlib的Python?

下面是我尝试过的方法,该方法不起作用:

import numpy as np
import torch
from matplotlib import pyplot as plt
from matplotlib.pyplot import (plot, savefig, xlim, figure,
                              ylim, legend, boxplot, setp,
                              axes, xlabel, ylabel, xticks,
                              axvline)
import seaborn as sns

layer_list_G1_G2 = [[80.,69.,52.], [82.,83.,80.],
                [78.,81.,59.]]

def make_density(layer_list, color, nlayer):

    
    fig = plt.figure(figsize=(20, 6))
    grid = plt.GridSpec(2, 6)

    ax_main = fig.add_subplot(grid[0, 0])
    
    plt.title('Density Plot of Median Stn. MC-Losses at Layers 1 - 12')
    plt.xlabel('MC-Loss')
    plt.ylabel('Density')
    plt.xlim(-0.2,0.05)
    plt.ylim(0, 85)
    min_ylim, max_ylim = plt.ylim()
    
    for j in range(nlayer):
        
        layer_list_tensor = torch.tensor(layer_list[j]) 
        
        den_j = fig.add_subplot(grid[j//6, j % 6], sharex=ax_main, sharey=ax_main)
        
                # Draw the density plot
        den_j.sns.distplot(layer_list, hist = False, kde = True,
                 kde_kws = {'linewidth': 2}, color=color)
  
        plt.axvline(layer_list_tensor.median().tolist(), color='orange', linestyle='dashed', linewidth=1.5)

        plt.text(layer_list_tensor.median().tolist()*0.87, 80, 'median: {:.2f}'.format(layer_list_tensor.median().tolist()))

>>> make_density(layer_list_G1_G2, 'green', 12)

谢谢

1 个答案:

答案 0 :(得分:0)

您需要将轴参考传递给ax=的{​​{1}}关键字

例如

distplot