我正在尝试编写一个Django Web应用程序,该应用程序显示具有多个参数的函数图,但是我无法在Web上找到任何此类示例。
到目前为止,我已在mpl
项目中创建了一个mpldjango
个应用,其结构如下:
.
├── 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
的情节:
,如果我在网址中设置a=2
,则类似。
这不是我想要的界面:我宁愿填写一个包含绘图参数的表格,并在我提交时更新情节。在我看来,这将是一个非常标准的代码示例,但我无法找到任何。我该怎么做呢?
答案 0 :(得分:4)
我做的是生成一个matplotlib图,将其保存为/media
https://docs.djangoproject.com/en/1.11/ref/settings/#media-root中配置的Django settings.py
文件夹的png,然后将其链接到您返回的页面图像。