代码之家  ›  专栏  ›  技术社区  ›  PhoebeB

Matplotlib Legend散点图案,可定制颜色

  •  11
  • PhoebeB  · 技术社区  · 16 年前

    inc = []
    out = []
    bal = []
    col = []
    
    fig=Figure()
    ax=fig.add_subplot(111)
    
    inc = (30000,20000,70000)
    out = (80000,30000,40000)
    bal = (12000,10000,6000)
    col = (1,2,3)
    leg = ('proj1','proj2','proj3')
    
    ax.scatter(inc, out, s=bal, c=col)
    ax.axis([0, 100000, 0, 100000])
    
    ax.set_xlabel('income', fontsize=20)
    ax.set_ylabel('Expenditure', fontsize=20)
    ax.set_title('Project FInancial Positions %s' % dt)
    ax.grid(True)
    canvas=FigureCanvas(fig)
    response=HttpResponse(content_type='image/png')
    canvas.print_png(response)
    

    Matplotlib: Legend not displayed properly

    1 回复  |  直到 9 年前
        1
  •  10
  •   Tim    13 年前

    example

    scatter

    print type(ax.scatter(...))
    

    分散

    不幸的是,matplotlib的较新版本似乎没有在图例中使用矩形。因此,由于您增加了散点图对象的大小,图例将包含非常大的圆圈。

    markerscale

    Legend guide 建议使用 Proxy Artist Color API fc

    p1 = Rectangle((0, 0), 1, 1, fc="b")
    p2 = Rectangle((0, 0), 1, 1, fc="g")
    p3 = Rectangle((0, 0), 1, 1, fc="r")
    legend((p1, p2, p3), ('proj1','proj2','proj3'))
    

    要获取之前在绘图中使用的颜色,请使用上面的示例,如下所示:

    pl1, = plot(x1, y1, '.', alpha=0.1, label='plot1')
    pl2, = plot(x2, y2, '.', alpha=0.1, label='plot2')
    p1 = Rectangle((0, 0), 1, 1, fc=pl1.get_color())
    p2 = Rectangle((0, 0), 1, 1, fc=pl2.get_color())
    legend((p1, p2), (pl1.get_label(), pl2.get_label()), loc='best')
    

    Matplotlib with custom legend

    推荐文章