具有多个网格规格以及水平和垂直邻接关系的Matplotlib仪表板

时间:2019-02-27 10:57:51

标签: python matplotlib

最近对邻接关系的澄清的补充问题。我知道我需要实现什么,但是相对于python / matplotlib而言,我还是有点迷茫。

按照标题-我正在尝试制作一个包含水平和垂直邻接关系的仪表板布局。根据先前问题的指导-我有一个外部gridspec和3个内部gridspec(gs0,gs1和gs2)。

我的挑战是中间规格-gs1。我需要生成2个垂直图表(在该行的LHS上)和一个跨过RHS的2行的单个极坐标图。我的挑战是如何将2个单元格合并为一个斧头,重要的是创建这种复杂布局的正确方法是什么。

谢谢。

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

def example_plot(ax):
    ax.plot([1, 2])
    ax.set_xlabel('x-label', fontsize=12)
    ax.set_ylabel('y-label', fontsize=12)
    ax.set_title('Title', fontsize=14)

fig = plt.figure(constrained_layout=False)

outer_gs = gridspec.GridSpec(nrows=3, ncols=1, figure=fig, height_ratios=[5,2,2], wspace=0.2,  hspace=0.3)
gs0 = gridspec.GridSpecFromSubplotSpec(nrows=3, ncols=1, subplot_spec=outer_gs[0], height_ratios=[1,4,1], wspace=0.2, hspace=0)
gs1 = gridspec.GridSpecFromSubplotSpec(nrows=2, ncols=2, subplot_spec=outer_gs[1], width_ratios=[5,2], wspace=0.2, hspace=0.2)
gs2 = gridspec.GridSpecFromSubplotSpec(nrows=1, ncols=5, subplot_spec=outer_gs[2], wspace=0, hspace=0.3)

# Top 3 adjacent charts
for n in range(3):
    ax = fig.add_subplot(gs0[n])
    example_plot(ax)

# Middle bit - 2 horizontal plots and polar chart on RHS (spanning both rows)

ax4 = fig.add_subplot(gs1[0])
example_plot(ax4)

ax5 = fig.add_subplot(gs1[1])
example_plot(ax5)

ax6 = fig.add_subplot(gs1[2])
example_plot(ax6)

ax7 = fig.add_subplot(gs1[3])
example_plot(ax7)


# Bottom 5 dials
for n in range(5):
    ax = fig.add_subplot(gs2[n])
    example_plot(ax)

target dashboard layout

0 个答案:

没有答案