2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Полосы при экспорте DensityPlot в Mathematica
Сообщение23.04.2015, 21:53 
При экспорте DensityPlot получаются какие-то полосы, как будто бы разные куски картинки сдвинуты друг относительно друга. Вот пример, как это выглядит:
Изображение
Картинка слева экспортировалась как Rasterize[plot] – на ней видны полосы. Картинка справа – Rasterize[plot, RasterSize->5000]. На правой картинке полос уже нет, но такая картинка экспортируется примерно в 10-20 раз дольше и при этом какого-то особого выигрыша в качестве у нее нет. Кроме того чем больше ставишь RasterSize тем меньше становятся Ticks, которые внутри рамки (справа над 0.1 он вообще пропал, например) и подписи координат и прочие буквы и цифры выглядят немного коряво. Подобные полосы я встречаю уже давно, но обычно проблема решалась просто установкой большого параметра ImageSize (я всегда ставил 4000) – картинка по-прежнему создавалась с полосами, но т.к. размер изображения был большой, то сдвиг одного ряда пикселей уже особо и не был заметен. А сейчас нужно делать картинки строго фиксированного размера, без возможности пережать их потом.
Может кто-нибудь знает как можно полосы убрать? В других типах графиков, например, в 3D графиках таких проблем при экспорте вроде не возникало.

 
 
 
 Re: Полосы при экспорте DensityPlot в Mathematica
Сообщение23.04.2015, 21:59 
Аватара пользователя
А зачем вы вообще используете Rasterize, ведь достаточно Export.

 
 
 
 Re: Полосы при экспорте DensityPlot в Mathematica
Сообщение23.04.2015, 22:04 
Aritaborian, у меня картинка состоит из пары графиков. Сверху ListDensityPlot, снизу обычный ListLinePlot. Чтобы сделать из них одну картинку я использую GraphicsColumn. У обоих графиков стоит почти одинаковый ImageSize, но если перед DensityPlot не поставить Rasterize, то графики почему-то экспортируются в разных размерах, например DensityPlot на картинке в 4 раза меньше чем ListLinePlot.

 
 
 
 Re: Полосы при экспорте DensityPlot в Mathematica
Сообщение23.04.2015, 23:12 
Аватара пользователя
Мне не удалось воспроизвести баг.
Код:
g1 = ListDensityPlot[{{1, 1, 1, 1}, {1, 2, 1, 2}, {1, 1, 3, 1}, {1, 2, 1, 4}}, Mesh -> All]
g2 = ListLinePlot[Prime[Range[25]], Filling -> Axis]
g = GraphicsColumn[{g1, g2}]
Export["D:/g.png", g, ImageSize -> 400]
Всё получилось нормально. Mathematica 10.0.0.0, Win7x86.

 
 
 
 Re: Полосы при экспорте DensityPlot в Mathematica
Сообщение23.04.2015, 23:33 
Aritaborian, вот пример того, что я говорил про изменение размеров.
Код:
g1 = ListDensityPlot[{{1, 1, 1, 1}, {1, 2, 1, 2}, {1, 1, 3, 1}, {1, 2,
      1, 4}}, Mesh -> All, ImageSize -> 500, AspectRatio -> 1/2];
g2 = ListLinePlot[Prime[Range[25]], Filling -> Axis, ImageSize -> 500,
    AspectRatio -> 0.2];
g = GraphicsColumn[{g1, g2}]


g2 = Rasterize[
   ListLinePlot[Prime[Range[25]], Filling -> Axis, ImageSize -> 500,
    AspectRatio -> 0.2]];
g = GraphicsColumn[{g1, g2}]

Насчет бага с полосами. Я все-таки последовал вашему совету и убрал все Rasterize. Пришлось заново подбирать размеры графиков, чтобы они ровненько легли в GraphicsColumn, но проблема вроде бы решена: картинки сохраняются без полос, и вроде все работает нормально. Я и раньше думал убрать Rasterize, но мне не хотелось этого делать потому что, во-первых, весь код уже был написан и все работало хорошо, за исключением этих полос при экспорте, и там пришлось бы в ряде мест вносить изменения из-за того что размер графиков разный стал, а во-вторых, хотелось уже все-таки узнать из-за чего она эти полосы чертит и разобраться с этим.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group