Генерирование графиков на python (для web-приложения)

Модератор: Модераторы разделов

Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Генерирование графиков на python

Сообщение Jan2ary »

Господа, есть задача: генерировать статистику в графическом виде - графики, гистограммы и проч. - и все это будет отрисовываться на вебе. Данные для статистики берутся из базы данных. Так вот вопрос: нужна библиотека для построения графиков на python. Я смотрел уже Python Imaging Library - если я правильно понял, это собственно обработка изображений, и еще SciPy, но тут мне кажется, что это стрельба из пушки по воробьям.
Посоветуйте библиотеку, а?

Хотя нашел тут библиотечку Gist, сейчас буду поглядеть... :)
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

Интересно мне тут :)
Нашел библиотечку dislin, пока вроде что-то умеет... Смотрим...
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
LXj
Сообщения: 94

Re: Генерирование графиков на python

Сообщение LXj »

А почему matplotlib -- это из пушки по воробьям? Если есть модуль, предназначенный для генерации графиков, то почему его использование для генерации графиков не является приемлемым?

А то могу ещё посоветовать генерировать графики в gnuplot :P Ну ещё я когда-то wxPlot использовал, но это не для веба
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

Не, просто SciPy - это научный пакет, мне столько не надо... Лишь бы графика была.
Остановился на dislin, пока играюсь.
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

Еще вопрос добавился...
Я научился генерить картинки в переменную или файл, теперь надо картинку запихнуть в хтмл код. Создавать временный файлик неохота, хорошо бы код gif непосредственно в html-код записать. Как это можно сделать?
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Генерирование графиков на python

Сообщение elide »

гугли про протокол data://
есть еще панковский метод - генерить таблицу с ячейками 1x1px изадавать у ячеек background (:
получаются pure html картинки.
только весят, заразы, метровов по 100....
слава роботам!
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: Генерирование графиков на python

Сообщение nerezus »

Jan2ary
<img src="http://server.blah/path/to/your/script.py">
ICQ 547097
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan

Re: Генерирование графиков на python

Сообщение plumbum »

На perl и php стандартное решение, это отдавать заголовок в котором прописываешь что дальше идут данные картинки. На лету генеришь картинку и сливаешь её в стандартный поток. Сейчас поищу как это делалось.

Вот, пища для размышлений. На php

Код: Выделить всё

header ("Content-type: image/png"); // Шлём заголовок
$im = @imagecreate (100, 100)
    or die ("Cannot initialize new GD image stream");
$background_color = imagecolorallocate ($im, 255, 255, 255);
$text_color = imagecolorallocate ($im, 0,0,0);
imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
imagepng ($im); // Выводим изображение в поток. Так же как и print выводит
imagedestroy($im);


Идея понятна?
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: Генерирование графиков на python

Сообщение nerezus »

Сейчас поищу как это делалось.
я уже написал ;) пост выше.

В заголовке:

Код: Выделить всё

Content-type: image/png

т.е.

Код: Выделить всё

print "Content-type: image/png\n\n"


Статья про сабж: http://hunger.ru/articles/sign
ICQ 547097
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan

Re: Генерирование графиков на python

Сообщение plumbum »

nerezus писал(а):
15.06.2006 19:45
я уже написал ;) пост выше.


Таки чуть не подрались =)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

plumbum
Так у меня работает. Вот только таким способом выдавать получается только картинку, если что-то добавляю на страничку, уже выводит мусор. Вот :(

nerezus
То, что надо! Не знаю как сам не додумался. Установить правильный хандлер и написать скрипт. Спасибо.
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan

Re: Генерирование графиков на python

Сообщение plumbum »

Jan2ary, немножко не по теме вопрос. Python к серваку сам прикручивал? К какому? Под какой осью? Есть толковое HowTo? А то не могу с налёта его забороть и к апачу прикрутить =(
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Генерирование графиков на python

Сообщение KiWi »

Jan2ary писал(а):
16.06.2006 11:50
plumbum
Так у меня работает. Вот только таким способом выдавать получается только картинку, если что-то добавляю на страничку, уже выводит мусор. Вот :(

nerezus
То, что надо! Не знаю как сам не додумался. Установить правильный хандлер и написать скрипт. Спасибо.

Так, на будущее: http не умеет вывавать в 1 ответе 2 разнородных типа данных.
Примечание: опускаем способ с <img src="data:...;..." />(подробнее -- http://www.sweeting.org/mark/blog/2005/07/...mbedded-in-html)
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

IFL
Вот, насчет data:... я тоже ковырялся, так ничего и не нашел. За ссылку спасибо, буду искать аналоги на python.

plumbum
mod_python под SuSe 10.0 на apache.
Тут все есть.
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan

Re: Генерирование графиков на python

Сообщение plumbum »

Jan2ary писал(а):
16.06.2006 13:57
Тут все есть.


Мдя =) слона то я и не приметил =) Сам-то мод у меня тоже есть в debian. А вот как заставить скрипт выполнятся... Не догоню =(
Ну сейчас буду вчитываться =)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
nerezus
Сообщения: 525
Статус: Вселенский отказник
ОС: windoze

Re: Генерирование графиков на python

Сообщение nerezus »

plumbum
если как CGI, то даже прикручивать не нужно ;)
ICQ 547097
Спасибо сказали:
Аватара пользователя
plumbum
Сообщения: 169
ОС: Debivan

Re: Генерирование графиков на python

Сообщение plumbum »

nerezus, ну дык =) cgi понятно =) но хочется чего-то большего =)

P.S. Таки въехал как эта система устроена =) Я про mod_python =)
ivan-a-r_1.0-19791224.3_ru_i786.deb (testing)
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: Генерирование графиков на python

Сообщение KiWi »

Jan2ary писал(а):
16.06.2006 13:57
IFL
Вот, насчет data:... я тоже ковырялся, так ничего и не нашел. За ссылку спасибо, буду искать аналоги на python.

А искать-то нечего :-)
Для base64 есть отдельный модуль(также называется :-))
А chunk_split ничего сильно сложного не делает -- после каждых 76 символов вставляет "\r\n"
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

Ну, модуль я сразу нашел. Так что тут все вопросы отпали.
Проблема в другом, библиотека dislin не умеет красиво расставлять время по осям, точнее, умеет, но в очень ограниченном наборе форматов. А вот SciPy ставиться отказвается напрочь.
Ставлю NumPy, ставится отлично, но при попытке импорта говорит:

Код: Выделить всё

>>> import numpy
import core -> failed: /usr/lib64/python2.4/numpy/core/multiarray.so: cannot open shared object file: No such file or directory
import lib -> failed: /usr/lib64/python2.4/numpy/core/multiarray.so: cannot open shared object file: No such file or directory
import linalg -> failed: /usr/lib64/python2.4/numpy/core/multiarray.so: cannot open shared object file: No such file or directory
import dft -> failed: /usr/lib64/python2.4/numpy/core/multiarray.so: cannot open shared object file: No such file or directory
import random -> failed: /usr/lib64/python2.4/numpy/random/mtrand.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib64/python2.4/numpy/__init__.py", line 49, in ?
    import add_newdocs
  File "/usr/lib64/python2.4/numpy/add_newdocs.py", line 2, in ?
    from lib import add_newdoc
  File "/usr/lib64/python2.4/numpy/lib/__init__.py", line 5, in ?
    from type_check import *
  File "/usr/lib64/python2.4/numpy/lib/type_check.py", line 8, in ?
    import numpy.core.numeric as _nx
  File "/usr/lib64/python2.4/numpy/core/__init__.py", line 5, in ?
    import multiarray
ImportError: /usr/lib64/python2.4/numpy/core/multiarray.so: cannot open shared object file: No such file or directory

Хотя все файлы есть и на своих местах. С правами все хорошо, даже из под рута не импортится. Вот :(
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

LXj
matplotlib умеет манипулировать разметкой осей? Время сможет проставить в формате 'hh:mi' хотя бы?
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали:
Аватара пользователя
Jan2ary
Бывший модератор
Сообщения: 630
Статус: Тщедушный очкарик

Re: Генерирование графиков на python

Сообщение Jan2ary »

Умеет, я научился уже :)
И очень даже хорошо умеет. Спасибо LXj
Не шалю, никого не трогаю, починяю примус...
Спасибо сказали: