python金字塔图绘制_Python-金字塔和matplotlib-SVG不能超过一个视图...

我正在开发一个Python Pyramid应用程序,打算在其中创建多个SVG图像,以便使用饼图绘制统计数据.在我的测试中,我发现一个SVG视图可以正常工作,并且在添加第二个SVG输出视图后立即加载了第二个SVG图像(加载SVG图像的顺序无关紧要),无论是直接通过其视图还是通过引用该视图的另一个视图,将在其他任何进一步调用中“合并” SVG图像以加载SVG文件.这似乎是Python堆栈中某处的错误,因为它似乎未正确清除内存(主要是在多个SVG文件的情况下,请参见下面的更多详细信息).另请注意,在加载足够的图像/页面后,会遇到TclError.

由于我在具有更多视图的更详细的应用程序中使用了SVG,因此我在最小化/精简的应用程序中重现了该代码,以表明这不是我要做的事情,并且此代码是直接从Pyramid炼金术模板和数据库生成的不涉及通话.该数据库在我的更多详细信息应用程序中得到了积极利用.该应用程序只有3个视图,其中第一个视图是原始模板的一部分.我还添加了DEBUG日志记录,以明确表明没有任何迹象表明存在另一个SVG视图的内部调用.

一些视图代码基于Matplotlib svg as string and not a file主要用于StringIO.请注意,由于需要饼图,这就是我的代码与所引用问题中的代码不同的主要原因.我发现无论使用StringIO还是cStringIO,问题本质上都是相同的.在我的代码中,我正在使用cStringIO.

PyPlot文档:: pyplot api

更新:从第一个SVG视图获取代码(图句柄和关闭命令):

@view_config(route_name='view_test_svg')

def test_svg_view(request):

# Full module import is not allowed by Pyramid

#from pylab import *

# Do individual required imports instead

from pylab import close, figure, axes, pie, title, savefig

# For clarity, note that the above, and below, function the same

#from matplotlib.pyplot import close, figure, axes, pie, title, savefig

log.debug('In test_svg_view')

fig = figure(1, figsize=(6,6))

ax = axes([0.1, 0.1, 0.8, 0.8])

labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']

fracs = [15, 30, 45, 10]

explode=(0, 0.05, 0, 0)

pie(fracs, explode=explode, labels=labels,

autopct='%1.1f%%', shadow=True, startangle=90)

title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})

imgdata = cStringIO.StringIO()

fig.savefig(imgdata, format='svg')

imgdata.seek(0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值