如何在matplotlib中处理图形

2024-06-09 21:39:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python/Django的新手,我尝试创建一个生成绘图的网站。为了生成绘图,我使用matplotlib。在

当我第一次运行页面时一切正常,但是刷新结果后我得到了错误的绘图(由新的和旧的绘图组成)。在

代码如下:

    from pylab import *

    ...


    #prepare values and labels
    values = []
    labels = []
    values.append(float(user.playcount)/sum*100)
    labels.append(user.name)

    for friend in friends:
        friend = friend.getInfo()
        values.append(float(friend.playcount)/sum*100)
        labels.append(friend.name)

    # create figure
    figure(1)

    # set some parameters
    params = { 'axes.labelsize': 6, 'text.fontsize': 6, 'font.size': 6, 'legend.fontsize': 6, 'xtick.labelsize': 6, 'ytick.labelsize': 6,}        
    rcParams.update(params)

    # draw, add legend and save
    pie(values, labels=labels, shadow=False)
    l = legend(loc='lower center', ncol= 5, bbox_to_anchor=(0.5, -0.25))
    l.get_frame().set_alpha(0.0)
    savefig('media/images/3.png', dpi=100, transparent=True)

    #close(1)

如果我取消对close(1)指令的注释,则刷新页面将出现问题,因为应用程序将卡在figure()指令上。在

谁能告诉我问题在哪里吗?我认为数字处理有问题,但我不知道到底是什么。在


Tags: andnamefriend绘图labels页面floatfigure
2条回答

我认为使用cla()轴方法会对您有好处,它clears the axes。您可以在脚本的顶部执行此操作,甚至在第一个绘图之前。我将使用这个而不是close(),因为这样第二次出现的图形就不存在了。所以我将figure(1)行替换为

figure(1)
figure(1).gca().cla()

这将图形设置为图1,然后获取当前轴(gca()),然后用cla()清除它。下面是一个我独立运行的django脚本,它对我很有用,并且模仿了我认为您正在尝试做的事情:

^{pr2}$

你可能只需要一句话就可以逃过一劫;只要这句话对我有用:

figure(1).gca().cla()

但它更清楚一点也许相反。在

根据Cristian Ciupitu对this similar question的回答,用figure()代替{}应该可以解决这个问题。在

相关问题 更多 >