【问题标题】:plotting a sympy plot in web2py在 web2py 中绘制一个 sympy 图
【发布时间】:2018-04-08 22:36:39
【问题描述】:

我想通过编写 web2py 函数 myplot4() 在 web2py 中绘制一个 sympy 绘图并使用它调用它 http://host:port/app/controller/myplot4.png

这是在 python shell 中工作的绘图的演示 sympy 代码。

from sympy import symbols
from sympy.plotting import plot
x = symbols('x')
p1 = plot(x*x)
p2 = plot(x)
p1.append(p2[0])
p1

我在http://www.web2pyslices.com/slice/show/1357/matplotlib-howto找到了一个食谱

这个配方工作正常,但它导入了 FigureCanvasAgg 和 Figure 而在 sympy 中导入的是绘图函数

有人可以告诉我如何根据这个配方(或其他方式)编写类似的函数来在 web2py 中绘制 sympy 图

from matplotlib.backends.backend_agg 
import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
def pcolor2d(title='title',xlab='x',ylab='y',
         z=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]]):
    fig=Figure()
    fig.set_facecolor('white')
    ax=fig.add_subplot(111)
    if title: ax.set_title(title)
    if xlab: ax.set_xlabel(xlab)
    if ylab: ax.set_ylabel(ylab)
    image=ax.imshow(z)
    image.set_interpolation('bilinear')
    canvas=FigureCanvas(fig)
    stream=cStringIO.StringIO()
    canvas.print_png(stream)
    return stream.getvalue()

然后尝试以下操作:

def myplot2():
    response.headers['Content-Type']='image/png'
    return pcolor2dt(z=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[4,5,6,7]])

并调用他们

http://host:port/app/controller/myplot2.png

【问题讨论】:

    标签: python matplotlib plot web2py sympy


    【解决方案1】:

    我通过实验找到了答案,很简单。

    def plot_sympy():
        from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
        from matplotlib.figure import Figure
        import io
        from sympy import symbols
        from sympy.plotting import plot
        x = symbols('x')
        p1 = plot(x*x)
        p2 = plot(x)
        p1.append(p2[0])
        s = io.BytesIO()
        p1.save(s)
        fig=Figure()
        canvas=FigureCanvas(fig)
        canvas.print_tif(s)
        return s.getvalue()
    def myplot4():
        response.headers['Content-Type']='image/png'
        return plot_sympy()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-19
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多