Найти - Пользователи
Полная версия: Python+Apache+Matplotlib
Начало » Python для новичков » Python+Apache+Matplotlib
1
Boris-117_23
Задача: мне нужно под сервером Apache запускать скрипт, который при помощи средств библиотеки matplotlib выводил бы какой-либо график.

Скрипт написан и работае сам по себе без проблем:
Появляется новое окно с прорисованным графикомю

Текст скрипта matplot.py:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.text as text

def main():

a = np.arange(0,3,.02)
b = np.arange(0,3,.02)
c = np.exp(a)
d = c

fig = plt.figure()
ax = fig.add_subplot(111)
plt.plot(a,c,'k–',a,d,'k:',a,c+d,'k')
plt.legend(('Model length', ‘Data length’, ‘Total message length’),
‘upper center’, shadow=True)
plt.ylim()
plt.grid(False)
plt.xlabel('Model complexity —>')
plt.ylabel('Message length —>')
plt.title('Minimum Message Length')

# match on arbitrary function
def myfunc(x):
return hasattr(x, ‘set_color’) and not hasattr(x, ‘set_facecolor’)

for o in fig.findobj(myfunc):
o.set_color('blue')

# match on class instances
for o in fig.findobj(text.Text):
o.set_fontstyle('italic')



plt.show()



if __name__=='__main__':
main()

Apache и Python соединяю при помощи mop_python.

Написал html-страницу:
<html>
<p>
<form action=“matplot.py/main” method=“POST” target=_new>

<input type=“submit”>

</form>
</html>

Запускаю browser (Maxthon):

http://localhost/

Появляется моя html-страничка с кнопкой. Жму кнопку - появляется новая вкладка Maxthon (target=_new), Maxthon делает вид, что что-то долго и нудно грузит и всё! Моё окно с графиком не прорисовывается.

Помогите!!!
Syao
Попробуй сохранить график как изображение и уже его подгружать на страницу.
Boris-117_23
Сделал так:

from matplotlib.mlab import normpdf
import matplotlib.numerix as nx
import pylab as p

def main(req):

x = nx.arange(-4, 4, 0.01)
y = normpdf(x, 0, 1) # unit normal
p.plot(x,y, color='red', lw=2)
p.savefig('1.png')

return “”“ <html>
<p><img src=”/1.png“>
</html>
”“”

main(1)

То есть скрипт с функцией, которая рисует простейший график и сохраняет его в формате .png => p.save('1.png').
Функция возвращает <html> теги, для загрузки только что созданной картинки.

Проблема:
Когда запускаю скрипт просто интерпретатором python, скрипт срабатывает корректно, сохраняет нужный файл.
Но при обращении через browser картинка .png не создаётся. Соответственно появляется html-страница с крестиком вместо картинки!

Далее попробовал ещё проще:

def main(req):

f=open('1.txt', ‘w’)
f.write('AAA')
f.close()

return “”“ <html>
<p><img src=”/1.png“>
</html>
”“”

main(1)

Опять же, при запуске через python всё работает, а через apache - файл не создаётся!!!

Help!!!
Ferroman
Думаю стоит задать абсолютный путь к картинке.
Boris-117_23
Да, абсолютно точно. Спасибо за совет, всё заработало!!!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB