Pho*_*beB 10 python charts matplotlib
我在这方面有点新手,我正在尝试创建一个带有自定义气泡大小和颜色的散点图.图表显示正常,但我如何获得一个描述颜色所指的图例.这是我所拥有的:
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)
Run Code Online (Sandbox Code Playgroud)
这个帖子很有帮助,但无法解决我的问题:Matplotlib:图例没有正确显示
也许这个例子很有帮助.
通常,图例中的项目与某种绘制对象相关.的scatter功能/方法治疗各界作为单个对象,请参见:
print type(ax.scatter(...))
Run Code Online (Sandbox Code Playgroud)
因此,解决方案是创建多个对象.因此,scatter多次呼叫.
不幸的是,较新版本的matplotlib似乎没有在图例中使用矩形.因此,图例将包含非常大的圆,因为您增加了散点图对象的大小.
图例用作markerscale关键字参数来控制图例标记的大小,但它似乎被打破了.
更新:
该传说指南建议使用代理艺术家在类似案件.该颜色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'))
Run Code Online (Sandbox Code Playgroud)
要获取先前在绘图中使用的颜色,请使用上面的示例,如:
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')
Run Code Online (Sandbox Code Playgroud)
这个例子将绘制如下情节:
