При экспорте довольно сложных графиков (особенно ListDensityPlot) в формате PDF или EPS (например, для публикации) результирующий размер файла может быть довольно большим. Например:
data = Flatten[Table[{f0, f, Exp[-(f - f0)^2/25^2]}, {f0, 500, 700, 5}, {f, 300,
900}], 1];
plot=ListDensityPlot[data,PlotRange->{Automatic,Automatic,{0,1}},InterpolationOrder->0]

Этот примерный набор данных имеет порядок размера, с которым я обычно работаю. Когда я экспортирую с помощью Export["C:\\test.pdf", plot], он создает файл PDF размером 23.9 МБ. Если я вместо этого попробую Export["C:\\test1.pdf", Rasterize[plot]], он будет намного меньше, но естественность и rescalability изображения естественно страдает.
Это сложнее, если моя фактическая цифра представляет собой комбинированный график, например (Edit: f переходит на 900)
plot2 = Show[plot, Plot[x, {x, 500, 900}, PlotStyle -> Thick]]

(или с некоторым использованием Epilog), где мне бы хотелось, чтобы фон ListDensityPlot был растеризован, но сохраните другую разметку и графики в форме `` vector ''. Или, по крайней мере, метки рамки не растрируются.
Есть ли способ сделать это?
Или, чтобы достичь той же цели с помощью другого умного метода?
Update
Я проверил связанный с этим вопрос, но это должно быть намного сложнее, чем нужно (по сути, экспортировать, а затем импортировать). Я смог использовать некоторые из трюков в этом вопросе, чтобы извлечь сюжет отдельно от осей:
axes = Graphics[{}, Options[plot2]]

plots = Graphics[plot2[[1]]]

Но термин plots теряет AspectRatio и PlotRange и т.д. plots может быть поражен с помощью Rasterize, но для этого требуется фиксирование размеров.
А потом, как их объединить?
