2010-07-30 3 views
15

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

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

+2

Почему вы используете Python 3.1? На данный момент я придерживаюсь 2.6. – nikow

+31

Если все так думают, 3.1 никогда не поймают. –

+0

он не поймает, если не совместим с ним – amadain

ответ

17

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

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

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

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

+0

Где зарегистрирован API URL-адресов? –

+0

@MattJoiner, похоже, что Google обновил свой API диаграмм, поэтому теперь документы в основном говорят о новых классах визуализации. Попробуйте http://code.google.com/apis/chart/image/docs/making_charts.html для API URL. – Duncan

+1

Спасибо. (SO Y U NO ACCEPT <15 CHARS) –

1

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

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

1

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

0

Существует, по крайней мере, две библиотеки графиков, использующие 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

1

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

Код в отношении текущей ветви dev находится в patch queue.

редактировать: rpy2 2.2.0 работает с Python 3.2

3

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

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

find/download the example here. Вот график, который он генерирует из данных в a.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() 
+1

Где зарегистрирован API URL? –

+0

URL-адрес API-интерфейсов диаграмм: http://psychopyko.com/tutorial/how-to-use-google-charts/ Ссылка теперь говорит «устарела»: http://developers.google.com/chart/image/Docs/chart_params Диаграммы API, главная страница: http://developers.google.com/chart/ Диаграммы API ссылок, кажется, все Javascript Сейчас: http://developers.google.com/chart/ интерактивные/документы/ссылка галерея примеров: http://google-developers.appspot.com/chart/interactive/docs/gallery Linechart пример, "просмотреть исходный код": http://google-developers.appspot.com/chart/interactive/docs/gallery/linechart Также: http://en.wikipedia.org/wiki/Google_Chart_API –

11

Стабильная версия поддерживает Python 3 с тех пор был выпущен: official announcement.

+5

Я бы сказал _a много_ прогресса :) (он отлично работает для меня) https://github.com/matplotlib/matplotlib-py3 (я знаю, что эта ветка устарела - но занимает высокое место по результатам для «matplotlib python3» в google) – mgalgs

+0

Я получаю хромые исключения при попытке для сохранения цифр. –

+0

Проверить http://www.lfd.uci.edu/~gohlke/pythonlibs/#matplotlib –

1

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

Смежные вопросы