Подтвердить что ты не робот

Matplotlib backends - мне все равно?

>>> import matplotlib
>>> print matplotlib.rcsetup.all_backends
[u'GTK', u'GTKAgg', u'GTKCairo', u'MacOSX', u'Qt4Agg', u'Qt5Agg', u'TkAgg', u'WX', u'WXAgg', u'CocoaAgg', u'GTK3Cairo', u'GTK3Agg', u'WebAgg', u'nbAgg', u'agg', u'cairo', u'emf', u'gdk', u'pdf', u'pgf', u'ps', u'svg', u'template']

Посмотрите на все эти бэкэнды!

Нужно ли мне заботиться о том, какой бэкэнд используется? например если я разрабатываю и тестирую свои материалы, используя только TkAgg бэкэнд, а кто-то другой, использующий мой код, может использовать бэкэнд GTKAgg в своей системе, может ли мой материал ломаться для них таким образом, что я не заметил бы - или все бэкэнды требовали более или менее "работать" одинаково?

4b9b3361

Ответ 1

Бэкэнд в основном имеет значение, если вы вставляете matplotlib в приложение, и в этом случае вам нужно использовать бэкэнд (GTK, Qt, TkInter, WxWindows), который соответствует набору инструментов, который вы используете для создания вашего приложения. Если вы также используете matplotlib простым интерактивным способом, вы также захотите использовать бэкэнд, который соответствует тому, что доступно на вашем компьютере (GTK, если вы используете Gnome, Qt, если вы используете KDE и т.д.) ( хотя большинство библиотек уже установлены на большинстве машин)

Часть слоя чертежа бэкэнда (Cairo, Agg...) также имеет значение с точки зрения функциональности: вы можете выбрать его в зависимости от того, что обеспечивает этот уровень, по сравнению с тем, что требуется вашему приложению (сглаживание, альфа-канал, форматы экспорта...). Поэтому, если вы разрабатываете и тестируете с помощью TkAgg и других людей, запускаемых с помощью, например, TkCairo, некоторые вещи могут не сработать. OTOH, работа с QtAgg, безусловно, будет работать очень схожим образом, если вы придерживаетесь API matplotlib и не достигаете уровня обернутого инструментария.