在Matplotlib和Seaborn中绘制对齐和格式化帮助

时间:2015-01-28 20:29:52

标签: python matplotlib plot seaborn

我有一个15行的数据帧,我用seaborn热图绘制。我有三个图,每个图的热图都有不同的比例。前两个图是前两行,它们未在图上对齐。

我已经创建了一个包含15行的网格,我将前两行中的每一行都给了网格的1/15,所以我不知道它为什么没有对齐。 热图的前两行的另一个问题是文本格式化也不起作用。 所以我想做两件事:

  1. 拉伸表格的顶部两行,使其与底部行对齐;
  2. 使格式化也适用于前两行。
  3. 也许还会在我的白色xaxes(l1和l2)中添加标题,这些标题将底部图中的子组分开(像ax.set_title这样的标准方法不起作用)。
  4. 我的代码:

    import seaborn as sns
    import matplotlib
    import matplotlib.pyplot as plt
    import matplotlib.gridspec as gs
    
    gs = gs.GridSpec(15, 1) # nrows, ncols
    f = plt.figure(figsize=(10, 15))
    cmap = sns.diverging_palette(220, 10, as_cmap=True)
    
    ax1 = f.add_subplot(gs[0:1, :])
    ax2 = f.add_subplot(gs[1:2, :])
    ax3 = f.add_subplot(gs[2:15, :])
    
    ticksx = plt.xticks(fontsize = 18, fontweight='bold')
    ticksy = plt.yticks(fontsize = 18, fontweight='bold')
    
    wageplot = sns.heatmap(df[0:1], vmin=3000, vmax=10000, annot=False, square=True, cmap=cmap, ax=ax1, yticklabels=True, cbar=False, xticklabels=False)
    
    tenureplot = sns.heatmap(df[1:2], vmin=45, vmax=100, annot=True, square=True, cmap=cmap, ax=ax2, yticklabels=True, cbar=False, xticklabels=False)
    
    heatmap = sns.heatmap(df[2:15], vmin=0, vmax=1, annot=False, square=True, cmap=cmap, ax=ax3, yticklabels=True, cbar=True, xticklabels=True)
    
    heatmap.set_xticklabels(cols, rotation=45, ha='right')
    
    l1 = plt.axhline(y=1, linewidth=14, color='w', label='Female')
    l2 = plt.axhline(y=5, linewidth=14, color='w', label='Education')
    
    f.tight_layout()
    

    如果我能指出哪里可以获得有关如何编程所需网格的信息,我将不胜感激。示例图片:

    enter image description here

0 个答案:

没有答案