Форум сайта python.su
0
Здравствуйте. Написал скрипт, который отрисовывает окружности на плоскости и в зависимости от некоторой характеристики закрашивает их различным цветом. Возникли проблемы с легендой. В неё записываются повторяющиеся строчки. Объясните пожалуйста как этого элегантно избежать.
#!/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)
Офлайн
253
#!/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)
Офлайн