В Matplotlib есть ли способ узнать список доступных форматов вывода
Согласно документации Matplotlib, matplotlib.figure.save_fig
принимает необязательный аргумент format
(см. matplotlib.figure documentation).
Эти параметры принимают "одно из расширений файлов, поддерживаемых активным бэкэнд" (как указано в официальной документации).
Моя точка зрения: как узнать, для конкретного бэкэнд, список поддерживаемых расширений?
Список доступных бэкэнд доступен через matplotlib.rcsetup.all_backends
. Эти бэкэнд доступны в matplotlib.backends
, но я не нахожу способ получить поддерживаемые расширения.
Ответы
Ответ 1
Если вы создаете фигуру, вы можете получить доступный поддерживаемый формат файла с помощью объекта canvas:
import matplotlib.pyplot as plt
fig = plt.figure()
print fig.canvas.get_supported_filetypes()
>>> {
'svgz': 'Scalable Vector Graphics',
'ps': 'Postscript',
'emf': 'Enhanced Metafile',
'rgba': 'Raw RGBA bitmap',
'raw': 'Raw RGBA bitmap',
'pdf': 'Portable Document Format',
'svg': 'Scalable Vector Graphics',
'eps': 'Encapsulated Postscript',
'png': 'Portable Network Graphics'
}
и он отобразит все форматы, в которых вы можете вывести текущий объект.
Ответ 2
Класс FigureCanvasBase
, расположенный в каждом сервере, имеет метод get_supported_filetypes
.
Для backend_agg
:
figure = matplotlib.figure.Figure()
fcb = matplotlib.backends.backend_agg.FigureCanvasBase(figure)
supported_file_types = fcb.get_supported_filetypes()
supported_file_types
содержит:
{'emf': 'Enhanced Metafile',
'eps': 'Encapsulated Postscript',
'pdf': 'Portable Document Format',
'png': 'Portable Network Graphics',
'ps': 'Postscript',
'raw': 'Raw RGBA bitmap',
'rgba': 'Raw RGBA bitmap',
'svg': 'Scalable Vector Graphics',
'svgz': 'Scalable Vector Graphics'}
Один оставшийся вопрос.... matplotlib.get_backend()
возвращает "agg"
. Есть ли более простой способ прямого указания на правильный бэкэнд-модуль?
Ответ 3
Вот список рендереров и типов файлов: http://matplotlib.sourceforge.net/faq/installing_faq.html#what-is-a-backend
Кроме того, отдельные бэкенды имеют get_supported_filetypes
метод в своем соответствующем классе FigureCanvas{backend-name}
, который предоставляет список поддерживаемых форматов файлов.