Графическое отображение в Python 3.x

В Python 2.6 я использовал matplotlib для создания простых графиков. Однако это несовместимо с Python 3.1.

Какие альтернативные модули могут выполнять одно и то же, не будучи очень сложными?

Ответы

Ответ 1

Вы говорите, что хотите создать несколько простых графиков, но на самом деле не сказали, насколько просто или какие графы вы хотите. Если они не слишком сложны, вы можете рассмотреть возможность использования API Google Chart.

например. an example chart

Это имеет некоторые преимущества: вам просто нужно создать URL-адрес, который описывает желаемый график, поэтому не должно быть никаких проблем с его использованием из Python 3.x. Конечно, есть и недостатки: вам нужно иметь подключение к Интернету при создании диаграммы, и у вас могут не быть стилей диаграммы, которые вы использовали с matplotlib.

Если вы не хотите напрямую создавать URL-адреса, для API диаграмм существует хотя бы один Python wrapper. Он не работает непосредственно на Python 3.x, но его запуск через 2to3, похоже, успешно преобразует его.

Ответ 3

Я написал небольшой пример, который работает в python 3 и использует google chart api (как предложил Duncan, я написал решение после видя этот пост).

Он не идеален, так как он добавляет зависимую третью сторону, которая может разорвать обратную совместимость в любое время, но графики хороши и нет абсолютно никакой зависимости от кода python. Стоит рассмотреть не "критически важный код".

Вы можете найти/скачать пример здесь. Вот график, который он генерирует из данных в XML файле: alt text

# build the query with template parameters
query ="http://chart.apis.google.com/chart?chxl=0:__X_LABELS__&chxp=__X_LABELS_POS__&chxr=0,__MIN_TIME__,__MAX_TIME__|1,__MIN_WEIGHT__,__MAX_WEIGHT__&chxs=0,676767,11.5,0,lt,676767|1,676767,11.5,0,lt,676767&chxt=x,y&chs=800x300&cht=lc&chco=3072F3&chds=__MIN_WEIGHT__,__MAX_WEIGHT__&chd=t:__COMMASEP_WEIGHT__&chdl=Weight&chdlp=b&chls=2,4,1&chma=5,5,5,25&chtt=Your+Weight+Timeline"

[...]

# relace template with data
query = query.replace('__X_LABELS__', strXLabels)
query = query.replace('__X_LABELS_POS__', strXLabelsPos)
query = query.replace('__MIN_TIME__', str(min(lst_dateEpoch)))
query = query.replace('__MAX_TIME__', str(max(lst_dateEpoch)))

[...]

# use 'urllib.request' to download the data & write to file
sock = urllib.request.urlopen(query)
image_bytes = sock.read()
sock.close()

fh = open('Weight_GoogleGraphApi.png', 'wb')
fh.write(image_bytes)
fh.close()

Ответ 4

В качестве альтернативы установке subversion для захвата источника, страница SF файлов SF имеет последнюю версию 1.5 в нескольких разных форматах, совместимых с Windows:

http://sourceforge.net/projects/numpy/files/NumPy/1.5.0b1/

Ответ 5

Возможно PyQwt? Они заявляют о совместимости 3.x. Я использовал только Qwt (на основе С++ lib PyQwt), но я нашел его довольно полезным.

Ответ 6

rpy2 обеспечивает доступ к графическим возможностям R, а rpy2 становится совместимым с Python 3 (благодаря помощи Google для финансирования Greg в течение лета).

Код для текущей ветки dev находится в очереди исправлений.

edit: rpy2 2.2.0 работает с Python 3.2

Ответ 7

MathGL (библиотека GPL) имеет интерфейс Python, который также работает с Python 3.

Ответ 9

Существует, по крайней мере, две библиотеки графиков, использующие PyQt, а именно PyQwt и PyQtGraph. Я использую PyQwt с Python 2.6 в течение нескольких недель, и это очень удобно. Документация невелика, и большую часть времени мне нужно обратиться к документам Qwt или примерам - хотя время, которое мне приходилось смотреть на документы, было немного и далеко, это ОЧЕНЬ прост в использовании, Я попытался построить его против python 3.1 только сейчас, но безуспешно. Я не нашел пакет tar для 5.2.1, который является единственной версией, совместимой с python 3.0, и для MacPorts ничего не существует.

Существует также довольно полный список графических библиотек на python.org http://wiki.python.org/moin/NumericAndScientific/Plotting