LINUX.ORG.RU

График с русской легендой в eps из gnuplot

 ,


2

2

Добрый вечер, ЛОР.

Встала задача вставить в текст иллюстрации-графики, построенные по файлам CSV. Поскольку редакция всё равно требует иллюстрации отдельными файлами (допустимые форматы: eps, gif, tiff, jpg), я не стал углубляться во встроенные средства рисования графиков LaTeX и решил подготовить их в gnuplot.

Из перечня форматов выбрал eps, поскольку gnuplot умеет его писать, а pdflatex — читать.

Скрипт для одного из графиков gnuplot в UTF8:

set encoding utf8                                                                                                                                
set datafile separator ','                                                                                                                       
set term "postscript" eps                                                                                                                       
set output "st-mt.eps"                                                                                                                          
plot "st.csv" using 1:2 with lines ti "1 поток", \                                                                
     "mt.csv" using 1:2 w li lw 3 lt 0 ti "8 потоков"                                                           
pause -1                                                                                                                                         

График нарисован, но русские буквы в легенде «съелись», видны только цифры 1 и 8.

В итоге я вместо EPS вывел в PNG, потом GIMP-ом вручную перевёл каждый PNG в EPS и уже их вставил в документ LaTeX. Задача решена, но осадочек остался.

Это глюк gnuplot или?..

gnuplot 5.0.6, Fedora 29.

★★★★★

gnuplot и кириллица это слишком сложно. Попробуй лучше set terminal tikz, результат которого потом \input{} в LaTeX.

TeopeTuK ★★★★ ()
Ответ на: комментарий от ados

То же самое. Похоже, с первоначальным вариантом разница только в том, что в этом случае ещё и файл .tex создаётся.

hobbit ★★★★★ ()
Ответ на: комментарий от hobbit

В случае epslatex тут UNIX-way во все поля - gnuplot текстом вообще не занимается, только рисование. Когда собираешь всё в единый отчёт проблем нет, но независимые графики нужно «добивать».

http://www.gnuplotting.org/output-terminals/

ados ★★★★★ ()
Последнее исправление: ados (всего исправлений: 1)

Шрифт нужно когда terminal устанавливаешь указать конкретный и именно в _его_ кодировке написать текст.

Сейчас попробовал и из коробки в png кириллица получается просто сказав что-то вроде (Ubuntu 18.04):

set terminal png
set output "utf-test.png
plot [][-1:1.2] sin(x) t 'Проба'
А вот с eps нет.

Так что проще всего, если нужно кириллицу именно через gnuplot добавлять, делать это через png, ну или как выше предложили так или иначе latex запользовать, что более правильно.

Evgueni ★★★★★ ()
Последнее исправление: Evgueni (всего исправлений: 2)

Всем спасибо.

Для текущего текста оставил перевод через PNG (благо графиков там немного), в следующий раз, возможно, попробую TEX включать…

hobbit ★★★★★ ()

Если всё еще интересно, то можно использовать кириллицу легким движением руки вот так (работает в абанту олдстейбл, gnuplot 5.2 patchlevel 2, TeX Live 2017):

$ cat test.gpi
set terminal epslatex standalone header "\\usepackage[utf8]{inputenc}\n\\usepackage[english,russian]{babel}"
set output "test.tex"
plot [1:10] x**2 title "абырвалг" with lines
$ gnuplot test.gpi && latex test.tex && dvips -E test.dvi -o test.eps

Для терминала postscript похоже надо шрифты правильные подогнать, а не только set encoding, но я ниасилел.

lu4nik ★★★ ()
12 декабря 2020 г.

Проблема в самом eps. Надо каким-то образом указать шрифт с русскими символами (я сейчас сам с этим вожусь)

PS: на лоре серьёзно капча от гугла??? Я впервые тут комментирую и охренел, да…

anonymous ()

У меня Manjaro

gnuplot --version
gnuplot 5.4 patchlevel 0

Вот это у меня работает:

set terminal eps noenhanced monochrome size 29.701cm,20.997cm font ",24"
set output file.".eps"
set encoding utf8
set timestamp "%c"
set title file
set xrange [0:]
set yrange [0:]
set border 3
set xtics nomirror
set ytics nomirror
set xlabel "Угол рассеяния 2θ, град."
set ylabel "Интенсивность рассеяния, имп."
plot file using 1:2 title "Рентгенограмма" with line linetype -1
find . -maxdepth 1 -name '*.[Uu][Xx][Dd]' -exec gnuplot -e "file='{}'" graph.plg \;

Я и не знал, что такая проблема есть. Я этот код, только без легенды, использую чтобы по быстрому рентгенограммы посмотреть.
Только что проверил — русские буквы отображаются нормально.

pxrdsg ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.