Сохранение изображений на питоне с очень высоким качеством
Как я могу сохранить графики python при очень высоком качестве?
То есть, когда я продолжаю увеличивать объект, сохраненный в файле PDF, нет размытия?
Кроме того, что было бы лучшим способом сохранить его?
png
, eps
? Или какой-то другой? Я не могу сделать pdf
, потому что есть скрытое число, которое случается с беспорядком с компиляцией Latexmk
.
Ответы
Ответ 1
Если вы используете matplotlib
и пытаетесь получить хорошие цифры в латексном документе, сохраните его как eps. В частности, попробуйте что-то подобное после запуска команд для построения изображения:
plt.savefig('destination_path.eps', format='eps', dpi=1000)
Я обнаружил, что файлы eps работают лучше всего, а параметр dpi
- это то, что действительно заставляет их хорошо выглядеть в документе.
UPDATE:
Чтобы указать ориентацию рисунка перед сохранением, просто вызовите следующее перед вызовом plt.savefig
, но после создания графика (при условии, что вы построили с использованием осей с именем ax
):
ax.view_init(elev=elevation_angle, azim=azimuthal_angle)
Где elevation_angle
- число (в градусах), определяющее полярный угол (вниз от вертикальной оси z), а azimuthal_angle
указывает азимутальный угол (вокруг оси z).
Я считаю, что легче всего определить эти значения, сначала построив изображение, а затем повернув его и наблюдая, как текущие значения углов появляются в нижней части окна чуть ниже фактического графика. Имейте в виду, что позиции x, y, z появляются по умолчанию, но заменяются двумя углами, когда вы начинаете нажимать + перетаскивать + поворачивать изображение.
Ответ 2
Просто чтобы добавить мои результаты, также используя matplotlib.
.eps сделал весь текст полужирным и удалил прозрачность..svg дал мне фотографии с высоким разрешением, которые на самом деле были похожи на мой график.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Do the plot code
fig.savefig('myimage.svg', format='svg', dpi=1200)
Я использовал 1200 dpi, потому что многие научные журналы требуют изображений в 1200/600/300 dpi в зависимости от того, что изображение. Преобразуйте в нужный dpi и формат в GiMP или Inkscape.
EDIT: Очевидно, что dpi не имеет значения, поскольку .svg являются векторной графикой и имеют "бесконечное разрешение".
Ответ 3
Хорошо, я нашел, что spencerlyon2 отвечает на работу, однако на тот случай, если кто-нибудь окажется не зная, что делать с этой одной строкой, я должен был сделать это следующим образом:
beingsaved = plt.figure()
# some scatters
plt.scatter(X_1_x, X_1_y)
plt.scatter(X_2_x, X_2_y)
beingsaved.savefig('destination_path.eps', format='eps', dpi=1000)