Экспорт графики для публикаций: как добиться одинаковой толщины линий в элементах графика? - PullRequest
17 голосов
/ 09 мая 2011

Кажется, что создание графики издательского качества с помощью mma - это черное искусство, которое датируется десятилетиями. Хотя в последние годы ситуация значительно улучшилась, при экспорте в файлы все еще трудно получить согласованные результаты. То, как выглядит конечный результат, в некоторой степени зависит от формата (лучше всего работает EPS).

Довольно часто линии в кадрах и метки в файле EPS оказываются слишком бледными, и при попытке сделать что-то вроде FrameStyle->AbsoluteThickness[2] легко получить слишком толстые линии. Итак, мой текущий подход включает в себя пять параметров - три толщины линий (в FrameStyle, AxesStyle и PlotStyle), ImageSize и FontSize в BaseStyle - и их произвольную настройку до тех пор, пока экспортированный график не станет приемлемым. Это несколько неудовлетворительно и отнимает много времени.

Есть ли лучший способ и / или стандартный рецепт для достижения сбалансированных, красивых участков?

Редактировать: вот один пример. Хорошо выглядит на экране (см. Скриншот), но экспортируйте его в EPS, и вы, вероятно, увидите две вещи: (a) Существует ошибка с встраиванием шрифтов EPS: для меня, эпсилон внутри рисунка не вставляется должным образом, если я не удалю директива FontWeight->Normal. (b) Рамка / галочки имеют светло-серый цвет и толщину 1 пиксель. Если бы я хотел уменьшить эту цифру (например, чтобы поместить ее как вставку), это бы испортило качество. Тем не менее, использование AbsoluteThickness[2] выглядит плохо - поэтому я должен увеличить ImageSize. Но тогда шрифты слишком малы и / или линии на графике выглядят слишком тонкими и т. Д. И т. Д.

With[{exSubscript = "\[UpTee]", epsFontSize = 24, 
   xcoords = {0.63, 2.2}}, testInset = Style[Inset[Cell[TextData[Cell[
      BoxData[FormBox[SubscriptBox["\[Epsilon]", exSubscript], 
           TraditionalForm]]]]], xcoords, {Left, Baseline}], 
     FontWeight -> Normal, FontSize -> epsFontSize];
  ];
Show[Plot[10 x^2, {x, 0, 1}, PlotStyle -> Thick, Frame -> True, 
  PlotRange -> {-2, 8}, Epilog -> {testInset}], Axes -> {True, True}, 
 AxesOrigin -> {0, 0}, AxesStyle -> Dashed, 
 FrameLabel -> {"\[Lambda] [\[Mu]m]", "Re{\[Epsilon]}"}, 
 BaseStyle -> {FontSize -> 22, FontWeight -> Plain, 
   FontFamily -> Helvetica}, ImageSize -> 500]
Export["test.eps", %]

Sample plot

Редактировать: Принимая ответ Сабольча, но г-ну Волшебнику следует отдать должное за указание на поведение FontFamily -> Helvetica против FontFamily -> "Helvetica" (которое выглядит как ошибка). Без кавычек экспорт PDF не начинается из-за испорченных шрифтов.

Ответы [ 3 ]

17 голосов
/ 09 мая 2011

Экран против просмотра печати

Трудно сравнивать толщину линий на экране, особенно когда отображаемая толщина приближается к 1 пикселю.Я обнаружил, что лучше всего печатать цифры в окончательном размере публикации и таким образом проверять их качество.

Использовать абсолютные измерения

Большинство проблем, которые у меня были с этим основаниемиз того факта, что Mathematica использует как абсолютные, так и относительные (к размеру графика) измерения.Для рисунков, которые появятся в печати, проще всего использовать абсолютные размеры, которые не масштабируются с графиком, в частности, для размеров шрифта и для толщины линий.Таким образом, вы можете иметь хорошее представление о том, как будет выглядеть результат при печати (и он не будет зависеть от размера рисунка).Цифры, которые вы указываете Mathematica, указаны в точках принтера.

Экспорт

Наконец, я обнаружил, что экспорт в EPS менее надежен, чем экспорт в PDF (например, шрифты могут небыть встроенным, как вы упомянули), и Mathematica не сможет сохранить все функции (например, непрозрачность!) при экспорте в EPS.Для 2D-графиков PDF обычно является хорошим выбором.Однако при экспорте файлов PDF и указании ImageSize в Export есть ошибка.Обходное решение, которое я использую, -

cm = 72/2.54 (* centimetres *)
Export["figure.pdf", Show[figure, ImageSize -> 7 cm]] (* 7 cm wide figure *)

. Вы можете включить результат в документ без без какого-либо масштабирования, и у вас будут одинаковые размеры шрифта и толщина линий на всех рисунках.

В целом, это более или менее сработало для меня:

  1. использовать абсолютные измерения для вещей, которые должны быть согласованы между цифрами при печати
  2. экспорт в PDF, спредполагаемый конечный размер и не масштабируйте результат перед его включением (например, не указывайте ширину в LaTeX)
5 голосов
/ 09 мая 2011

Я подставил FontFamily -> "Helvetica" и экспортировал в PDF. Открыв этот PDF в Foxit Reader, я вижу это:

enter image description here

Кроме отличного увеличения (не знаю почему), оно выглядит очень похоже на ваш рендеринг.

1 голос
/ 09 мая 2011

Я бы внимательно посмотрел на LevelScheme , которую я использовал для публикации качественной графики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...