Если вы используете matplotlibи пытаетесь получить хорошие цифры в латексном документе, сохраните его как eps. В частности, попробуйте что-то вроде этого после выполнения команд для построения изображения:
plt.savefig('destination_path.eps', format='eps')
Я обнаружил, что файлы eps работают лучше всего, и именно этот dpiпараметр заставляет их хорошо выглядеть в документе.
ОБНОВИТЬ:
Чтобы указать ориентацию фигуры перед сохранением, просто вызовите следующее перед plt.savefigвызовом, но после создания графика (при условии, что вы построили график с использованием осей с именем ax):
Где elevation_angle- число (в градусах), определяющее полярный угол (вниз от вертикальной оси z), а значение azimuthal_angle- азимутальный угол (вокруг оси z).
Я считаю, что проще всего определить эти значения, сначала построив изображение, а затем повернув его и наблюдая, как текущие значения углов появляются в нижней части окна, чуть ниже фактического графика. Имейте в виду, что позиции x, y, z отображаются по умолчанию, но заменяются двумя углами, когда вы начинаете щелкать + перетаскивать + вращать изображение.
@ spencerlon2 что если я хочу изменить ориентацию фигуры перед сохранением?
dustin
13
Зачем нам нужен параметр DPI? Разве eps - это не векторный формат?
mkvoya
1
Хороший момент - DPI не требуется для векторных форматов, таких как svg, pdf, eps
spencerlyon2
Вы можете опустить, format='eps'если хотите. В этом случае формат определяется по имени файла.
timgeb
72
Просто чтобы добавить свои результаты, также используя 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.
РЕДАКТИРОВАТЬ: Очевидно, что dpi не имеет значения, поскольку .svg - это векторная графика и имеет «бесконечное разрешение».
DPI имеет большое значение, когда мы используем imshow(..)где-то на фигуре. Эти растровые изображения растрируются по мере встраивания в SVG. При заданном по умолчанию DPI результаты даже хуже, чем то, что мы видим на экране, определенно не подходящие для публикаций.
Евгений Сергеев
Я также настоятельно рекомендую Scour ( github.com/scour-project/scour ), чтобы уменьшить размер файла svg. В наиболее агрессивных настройках я могу уменьшить размер файла до 50% от оригинала - 5%, если я использую сжатый формат .svgz.
grofte
8
Хорошо, я обнаружил, что ответ spencerlyon2 работает, однако, если кто-то обнаружит, что не знает, что делать с этой одной строкой, мне пришлось сделать это следующим образом:
Если вы работаете с морскими графиками , вместо matplotlib вы можете сохранить изображение .png следующим образом:
Предположим, у вас есть matrixобъект (pandas или numpy), и вы хотите получить тепловую карту:
import seaborn as sb
image = sb.heatmap(matrix)# this gets you the heatmap
image.figure.savefig("C:/Your/Path/ ... /your_image.png")# this saves it
Этот код совместим с последней версией seaborn. Другие коды, связанные с stackoverflow, работали только для предыдущих версий.
Мне нравится еще один способ. Я установил размер следующего изображения следующим образом:
plt.subplots(figsize=(15,15))
А позже я рисую вывод в консоли, откуда могу скопировать и вставить его куда захочу. (Поскольку seaborn построен поверх matplotlib, проблем не возникнет.)
Вы можете сохранить изображение с разрешением 1920x1080 (или 1080p), используя:
fig = plt.figure(figsize=(19.20,10.80))
Вы также можете пойти намного выше или ниже. Вышеупомянутые решения хорошо подходят для печати, но в наши дни вы хотите, чтобы созданное изображение переходило в PNG / JPG или отображалось в широкоэкранном формате.
format='eps'
если хотите. В этом случае формат определяется по имени файла.Просто чтобы добавить свои результаты, также используя matplotlib.
.eps сделал весь мой текст жирным и убрал прозрачность. .svg дал мне изображения в высоком разрешении, которые действительно выглядели как мой график.
Я использовал 1200 dpi, потому что во многих научных журналах требуются изображения с разрешением 1200/600/300 dpi в зависимости от того, что это за изображение. Преобразуйте в желаемое dpi и отформатируйте в GiMP или Inkscape.
РЕДАКТИРОВАТЬ: Очевидно, что dpi не имеет значения, поскольку .svg - это векторная графика и имеет «бесконечное разрешение».
источник
imshow(..)
где-то на фигуре. Эти растровые изображения растрируются по мере встраивания в SVG. При заданном по умолчанию DPI результаты даже хуже, чем то, что мы видим на экране, определенно не подходящие для публикаций.Хорошо, я обнаружил, что ответ spencerlyon2 работает, однако, если кто-то обнаружит, что не знает, что делать с этой одной строкой, мне пришлось сделать это следующим образом:
источник
Если вы работаете с морскими графиками , вместо matplotlib вы можете сохранить изображение .png следующим образом:
Предположим, у вас есть
matrix
объект (pandas или numpy), и вы хотите получить тепловую карту:Этот код совместим с последней версией seaborn. Другие коды, связанные с stackoverflow, работали только для предыдущих версий.
Мне нравится еще один способ. Я установил размер следующего изображения следующим образом:
А позже я рисую вывод в консоли, откуда могу скопировать и вставить его куда захочу. (Поскольку seaborn построен поверх matplotlib, проблем не возникнет.)
источник
Вы можете сохранить изображение с разрешением 1920x1080 (или 1080p), используя:
Вы также можете пойти намного выше или ниже. Вышеупомянутые решения хорошо подходят для печати, но в наши дни вы хотите, чтобы созданное изображение переходило в PNG / JPG или отображалось в широкоэкранном формате.
источник