Как избежать дублирования двух легенд для сдвоенных осей?Python

Программы на Python
Anonymous
Как избежать дублирования двух легенд для сдвоенных осей?

Сообщение Anonymous »

Эту диаграмму создает следующий скрипт:

Изображение

Код: Выделить всё

# -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals

import logging

import os
import matplotlib.pyplot as plt
import numpy

logger = logging.getLogger(__name__)
del (logging)

def dummy_chart():
rows = [
(1, 12000000, 31000001, 590422016, 644157440),
(2, 24000000, 62000001, 644157440, 753680384),
(3, 36000000, 93000001, 753680384, 877752320),
(4, 48000000, 124000001, 877752320, 925917184),
(5, 60000000, 155000001, 925917184, 919097344),
(6, 72000000, 186000001, 919097344, 1032060928),
(7, 84000000, 217000001, 1032060928, 1132019712),
(8, 96000000, 248000001, 1132019712, 1175019520),
(9, 108000000, 279000001, 1175019520, 1218285568),
]
create_chart(rows)

def create_chart(rows):
m = numpy.array(rows).transpose()
fig, ax1 = plt.subplots()
ax1.set_xlabel('count')
ax1.set_ylabel('len data')

ax1.plot(m[0], m[1], '.', label='len_data')
ax1.plot(m[0], m[2], '.', label='len_content')
ax1.legend()

ax2 = ax1.twinx()
ax2.set_ylabel('ram')
ax2.plot(m[0], m[3], label='mem_start')
ax2.plot(m[0], m[4], label='mem_end')
ax2.legend()
plt.show()

dummy_chart()
Есть ли способ предотвратить перекрытие легенд?

Позади «mem_start» и «mem_end» вы можете увидеть вторую легенду светло-серого цвета.

Я предпочитаю «интеллектуальный» способ. Я имею в виду решение, в котором мне не нужно явно указывать местоположение. На этой диаграмме есть две легенды. В следующем может быть пять... Мне нравится, если это работает само по себе.

Вернуться в «Python»