Как синхронизировать таблицу с сюжетом в matplotlib? - PullRequest
0 голосов
/ 13 декабря 2018

Я нарисовал кучу коробок и прикрепил стол справа от графика с кодом ниже.Я хотел нарисовать статистические столбики и дополнительную информацию в таблице рядом с ним.Каждая строка таблицы должна иметь ту же ординату, что и соответствующая полоса.Но я потерпел неудачу и получил

enter image description here

Как видите, таблица не только выходит из фигуры, но и полностью не синхронизирована с осью Y.

Как исправить?

def plot_time_machine_stats(machine_stats, add_table=True):
    labels, bxpstats = zip(*[(k, to_bxpstats(tag_stats['time'])) for k, tag_stats in machine_stats['tag_stats'].items()])
    machine_name = machine_stats['machine_name']
    type_name = machine_stats['type_name']

    plt.gca().bxp(bxpstats, showmeans=True, showfliers=False, vert=False)
    plt.semilogx()
    plt.yticks(np.arange(1, len(labels) + 1), labels)
    plt.title(machine_name + '/' + type_name + '/periods')
    plt.xlabel('milliseconds')
    plt.ylabel('tags')

    if add_table:
        cell_text = []
        for label, tag_stats in zip(labels, machine_stats['tag_stats'].values()):
            tss = [tag_stats['time']['timestamp_first'], tag_stats['time']['timestamp_last']]
            tss = [datetime.strftime(time_from_posix(ts/1000), '%Y-%m-%d %H:%M:%S') for ts in tss]
            cell_text.append(tss)
        cell_text.reverse()
        columns = ['min_time', 'max_time']
        the_table = plt.table(cellText=cell_text,
                              rowLabels=labels,
                              colLabels=columns,
                              loc='right')
...