Уведомления

Группа в Telegram: @pythonsu

#1 Март 6, 2015 23:34:52

__Ak1m__
Зарегистрирован: 2013-02-04
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

matplotlib. Создание легенды для patch объектов

Здравствуйте. Написал скрипт, который отрисовывает окружности на плоскости и в зависимости от некоторой характеристики закрашивает их различным цветом. Возникли проблемы с легендой. В неё записываются повторяющиеся строчки. Объясните пожалуйста как этого элегантно избежать.

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.cm as cm
from matplotlib.patches import Rectangle, Circle
from pylab import *
def plot_piles(x_list,y_list,values_list,d):
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    legend_list = list(set(values_list))
    legend_list.sort()
    for i in range(len(x_list)):
        x = x_list[i]
        y = y_list[i]
        val = values_list[i]
        indx = legend_list.index(val)
        clr = cm.hsv(32*(indx))
        sec = Circle((x,y),d/2.0,facecolor = clr, edgecolor = clr,
                        label = val)
        val_text = text(x, y, str(val),horizontalalignment = 'right')
        ax1.add_patch(sec)
    plt.axis('equal')
    print legend_list
    legend()
    ## legend(legend_list) #в этом случае строчки не повторяются, но цвета перепутаны
    fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.95)
    fig.set_size_inches(11.6929134, 8.2677165) #формат A4
    savefig("piles_plan.pdf",dpi=300) #запись в файл
    show()
if __name__ == '__main__':
    x_list = [0.0,1.2,4.0,-3.0, 1.5,]
    y_list = [0.0,3.0,2.6,-7.0,0.1,]
    values_list = [1300.0, 1100.0, 1300.0, 1100.0, 2200.0]
    plot_piles(x_list,y_list,values_list,0.4)

Офлайн

#2 Март 7, 2015 08:33:02

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

matplotlib. Создание легенды для patch объектов

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
import matplotlib.cm as cm
from matplotlib.patches import Rectangle, Circle
from pylab import *
def plot_piles(x_list,y_list,values_list,d):
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    legend_list = list(set(values_list))
    legend_list.sort()
    handles = []
    labels = []
    for i in range(len(x_list)):
        x = x_list[i]
        y = y_list[i]
        val = values_list[i]
        indx = legend_list.index(val)
        clr = cm.hsv(32*(indx))
        sec = Circle((x,y),d/2.0,facecolor = clr, edgecolor = clr,
                        label = val)
        val_text = text(x, y, str(val),horizontalalignment = 'right')
        if i<2:
            handles.append(sec)
            labels.append("qq "+str(val))
        ax1.add_patch(sec)
    plt.axis('equal')
    print legend_list
    legend(handles,labels)
    ## legend(legend_list) #в этом случае строчки не повторяются, но цвета перепутаны
    fig.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.95)
    fig.set_size_inches(11.6929134, 8.2677165) #формат A4
    savefig("piles_plan.pdf",dpi=300) #запись в файл
    show()
if __name__ == '__main__':
    x_list = [0.0,1.2,4.0,-3.0, 1.5,]
    y_list = [0.0,3.0,2.6,-7.0,0.1,]
    values_list = [1300.0, 1100.0, 1300.0, 1100.0, 2200.0]
    plot_piles(x_list,y_list,values_list,0.4)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version