Я обычно использую маршрут tikz-pgfplot
через интерфейс gnuplot-lua
, чтобы рисовать научные цифры для исследовательских работ. Обычно это работает очень хорошо, и я могу легко интегрировать свои цифры в документы latex
. Полученные таким образом фигуры имеют очень высокое разрешение и уточнены. Однако камнем преткновения является диаграмма рассеяния большого набора данных с высоким разрешением для настройки точек 100,000
.
Если я следую своему обычному маршруту tikz-pgfplot
, создается файл latex
, но при компиляции через pdflatex
возникает ошибка tex memory exceeded...
. Я также узнал, что увеличивать объем памяти tex
- не лучшая идея. Итак, я закончил создание рисунка eps
(инкапсулированный постскриптум), который затем включил в свой документ latex
через tikz-pgfplot
для визуализации аннотаций. Обычно это работает, но в результате получается очень большой файл PDF
, подобный 2 MB
для маленькой фигуры, и считывающему устройству PDF
требуется много времени, чтобы полностью отобразить фигуру.
Мне было интересно, есть ли другие способы создать диаграмму рассеяния большого набора данных с высоким разрешением? Любой указатель будет очень признателен.
Мадхур
Любое представление в векторном формате из 10 ^ 5 точек обязательно будет большим, потому что каждая точка описывается отдельно, даже если она находится над или под многими другими точками. Общее решение состоит в том, чтобы использовать формат растрового изображения для графика, поскольку каждый пиксель на графике либо установлен, либо не установлен, независимо от того, сколько точек лежит на нем. Размер выходного представления в первом приближении не зависит от количества точек.
Придерживаясь gnuplot, я бы, вероятно, использовал set terminal cairolatex png standalone
для генерации начального описания сюжета, а затем pdflatex для создания окончательного pdf-файла со встроенным в него растровым изображением. Например.:
# create a bitmapped version
set term cairolatex png standalone size 10cm, 7cm
set output 'cairolatex+png.tex'
set xrange [0:1]
set sample 100000
plot '+' using (rand(0)):(rand(0)) with dots
unset output
system("pdflatex cairolatex+png")
# create a vector version
set term tikz standalone size 10cm, 7cm
set output 'tikz.tex'
set sample 10000
replot
unset output
system("pdflatex tikz")
Первый график завершается немедленно, и создается файл меньшего размера. Второй график занимает несколько минут и дает файл большего размера, несмотря на то, что он содержит только 1/10 количества точек.
[236] ls -s1 *.pdf
416 cairolatex+png.pdf
844 tikz.pdf
Оба используют латекс для текстовых частей графика, хотя шрифты по умолчанию могут быть разными.
Благодарю за ответ. Однако по какой-то причине у меня нет опции
png
для терминалаgnuplot
cairolatex
. Итак, я использовал терминалcairopng
, который дал ту же графику, и теперь мой окончательный размер рисункаpdf
составляет около18 KB
вместо более раннего1.8 MB
! Спасибо!