python - 如何在 Django Web 应用程序中生成可使用表单参数化的 Matplotlib 图

标签 python django matplotlib

我正在尝试编写一个 Django Web 应用程序,它显示带有多个参数的函数图,但是我无法在网络上找到任何相关示例。

到目前为止,我已经在 mpldjango 项目中创建了一个 mpl 应用程序,其结构如下:

.
├── db.sqlite3
├── manage.py
├── mpl
│   ├── __init__.py
│   ├── __pycache__
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── mpldjango
    ├── __init__.py
    ├── __pycache__
    ├── settings.py
    ├── urls.py
    └── wsgi.py

其中 mpl/views.py

import django
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np

def make_canvas(rate):
    rate = float(rate)
    fig = Figure()
    canvas = FigureCanvas(fig)
    ax = fig.add_subplot(111)
    x = np.arange(-2, 1.5, 0.01)
    y = np.sin(np.exp(rate * x))
    ax.plot(x,y)
    return canvas

def mplimage(request, rate=2):
    canvas = make_canvas(rate=rate)
    response=django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

mpldjango/urls.py

from django.conf.urls import include, url
from django.contrib import admin
import mpl.views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'mplimage.png/a=(?P<rate>[0-9]+)', mpl.views.mplimage),
    url(r'mplimage.png', mpl.views.mplimage),
]

现在,在 python manage.py runserver 之后,如果我浏览到 http://localhost:8000/mplimage.png/a=3 ,例如,我得到将 rate 参数设置为 3 的绘图:

enter image description here

如果我在 URL 中设置 a=2,则类似。

但这不是我想要的界面:我更愿意填写包含绘图参数的表单,并在提交时更新绘图。在我看来,这将是一个非常标准的代码示例,但我找不到任何代码示例。我该怎么办?

最佳答案

我所做的是生成一个 matplotlib 图形,将其作为 png 保存到 settings.py 中配置的 Django /media 文件夹 https://docs.djangoproject.com/en/1.11/ref/settings/#media-root然后将其链接到您返回的页面而不是图像。

关于python - 如何在 Django Web 应用程序中生成可使用表单参数化的 Matplotlib 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45464716/

相关文章:

python - 通过Python中的同一函数解析(删除多余的空格,编码)多个属性

python - Django 按 id 分组然后选择最大时间戳

python - 正则表达式匹配 django block templatetag

python - Django 未处理的异常

使用 pylab 绘制 python 绘图

python - 有没有办法将 python 棋盘转换为整数列表?

python - 有没有办法在 "pure"Keras 中将图像从灰度转换为 RGB

python - Scikit Learn 多类分类(完美结果)

来自 x,y,z 数据的 matplotlib pcolormesh 图

Python:绘制使用 `period_range` (pandas) 创建的数据时出错