def makelegend(source, **kwargs): ''' Make a legend. :param souce: Legend file name or list of the legen breaks. :returns: Created legend. ''' if isinstance(source, basestring): if os.path.exists(source): ls = LegendScheme() ls.importFromXMLFile(source, False) return ls else: source = getcolormap(source) else: if isinstance(source, list): if isinstance(source[0], ColorBreak): ls = LegendScheme(source) else: colors = getcolors(source) values = kwargs.pop('values', None) if values is None: cbs = [] for c in colors: cb = ColorBreak() cb.setColor(c) cbs.append(cb) ls = LegendScheme(cbs) else: ls = LegendManage.createLegendScheme(values, colors) else: values = kwargs.pop('values', None) if values is None: ls = None else: if isinstance(values, NDArray): values = values.aslist() cbs = source.findBreaks(values) ls = LegendScheme(cbs) return ls
def getlegendbreak(geometry, **kwargs): cobj = kwargs.pop('color', None) if cobj is None: cobj = kwargs.pop('facecolor', None) color = None if not cobj is None: color = getcolor(cobj) if geometry == 'point': lb = PointBreak() marker = kwargs.pop('marker', 'o') if marker == 'image': imagepath = kwargs.pop('imagepath', None) if not imagepath is None: lb.setMarkerType(MarkerType.Image) lb.setImagePath(imagepath) elif marker == 'font': fontname = kwargs.pop('fontname', 'Weather') lb.setMarkerType(MarkerType.Character) lb.setFontName(fontname) charindex = kwargs.pop('charindex', 0) lb.setCharIndex(charindex) else: pstyle = getpointstyle(marker) lb.setStyle(pstyle) size = kwargs.pop('size', 6) lb.setSize(size) ecobj = kwargs.pop('edgecolor', 'k') edgecolor = getcolor(ecobj) lb.setOutlineColor(edgecolor) edgesize = kwargs.pop('edgesize', 1) lb.setOutlineSize(edgesize) fill = kwargs.pop('fill', True) lb.setDrawFill(fill) edge = kwargs.pop('edge', True) lb.setDrawOutline(edge) elif geometry == 'line': lb = PolylineBreak() size = kwargs.pop('size', 1.0) size = kwargs.pop('linewidth', size) lb.setWidth(size) lsobj = kwargs.pop('linestyle', '-') linestyle = getlinestyle(lsobj) lb.setStyle(linestyle) marker = kwargs.pop('marker', None) if not marker is None: pstyle = getpointstyle(marker) lb.setDrawSymbol(True) lb.setSymbolStyle(pstyle) markersize = kwargs.pop('markersize', None) if not markersize is None: lb.setSymbolSize(markersize) markercolor = kwargs.pop('markercolor', None) if not markercolor is None: markercolor = getcolor(markercolor) lb.setSymbolColor(markercolor) fillcolor = kwargs.pop('makerfillcolor', None) if not fillcolor is None: lb.setFillSymbol(True) lb.setSymbolFillColor(getcolor(fillcolor)) else: lb.setSymbolFillColor(markercolor) interval = kwargs.pop('markerinterval', 1) lb.setSymbolInterval(interval) elif geometry == 'polygon': lb = PolygonBreak() ecobj = kwargs.pop('edgecolor', 'k') edgecolor = getcolor(ecobj) lb.setOutlineColor(edgecolor) fill = kwargs.pop('fill', None) if fill is None: if color is None: lb.setDrawFill(False) else: lb.setDrawFill(True) else: lb.setDrawFill(fill) edge = kwargs.pop('edge', True) lb.setDrawOutline(edge) size = kwargs.pop('size', None) size = kwargs.pop('edgesize', size) if not size is None: lb.setOutlineSize(size) hatch = kwargs.pop('hatch', None) hatch = gethatch(hatch) hatchsize = kwargs.pop('hatchsize', None) bgcolor = kwargs.pop('bgcolor', None) bgcolor = getcolor(bgcolor) if not hatch is None: lb.setStyle(hatch) if not bgcolor is None: lb.setBackColor(bgcolor) if not hatchsize is None: lb.setStyleSize(hatchsize) else: lb = ColorBreak() caption = kwargs.pop('caption', None) if not caption is None: lb.setCaption(caption) if not color is None: lb.setColor(color) alpha = kwargs.pop('alpha', None) if not alpha is None: lb.setColor(getcolor(lb.getColor(), alpha)) value = kwargs.pop('value', None) isunique = True if not value is None: if isinstance(value, (tuple, list)): lb.setStartValue(value[0]) lb.setEndValue(value[1]) isunique = False else: lb.setStartValue(value) lb.setEndValue(value) return lb, isunique