Я пытаюсь создать сценарий gnuplot, который будет создавать клон следующего вывода:
Я хотел бы добавить следующие функции:
1. Мультиплоты для отображения переходов от одной точки симметрии к другой - без вопросов
2. Метки Latex / MathJax в терминале wxt - возможно?
3. Возможность переключения между двумя обозначениями точек симметрии - например, [00ζ] и Z
4. Надписи ветвей должны выполняться вручную, вручную вводя координаты в скрипт.
Если есть другие особенности, которые вам кажутся очевидными, прокомментируйте.
Чтобы ответ был помечен как правильный, укажите, как лучше всего перейти к функциям 2 и 3.
1 ответ
Относительно 2: Нет, невозможно использовать LaTeX или MathJax для меток в терминале wxt. Но это только интерактивная часть.
В этом случае вы можете использовать utf8
и enhanced
, чтобы получить хотя бы правильные символы:
set encoding utf8
set termoption enhanced
set xlabel '[00ζ]'
set label at graph 0.5,0.5 'Σ_1(0)'
plot x
Для качества печати изображения вы можете использовать set terminal cairolatex pdf
для использования LaTeX для этикеток:
set terminal cairolatex pdf standalone
set output 'test.tex'
set bmargin 3
set xlabel '$[00\zeta]$'
set label at graph 0.5,0.5 '$\Sigma_1(0)$'
plot x
set output
system('pdflatex test.tex')
Здесь вы должны обратить внимание на использование одинарных кавычек '
, в противном случае вы должны экранировать некоторые символы.
Относительно 3: нет «автоматического» способа переключения между двумя вариантами, но вы, конечно, можете определить все метки как строку и выбирать между двумя:
latex = 1
if (latex) {
xlabel = '$[00\zeta]$'
label1 = '$\Sigma_1(0)$'
} else {
xlabel = '[00ζ]'
label1 = 'Σ_1(0)'
}
set xlabel xlabel
set label 1 at graph 0.5,0.5 label1
В целом это работает, но поскольку gnuplot не знает точной ширины и высоты метки LaTeX, может потребоваться некоторая тонкая настройка положения метки (например, с помощью offset
для xlabel
, или с разными позициями. В этом случае вы можете определить целые команды и вызывать их позже:
latex = 1
if (latex) {
set_xlabel = 'set xlabel ''$[00\zeta]$'' offset 0,-1'
set_label1 = 'set label 1 ''$\Sigma_1(0)$'' at graph 0.5,0.5'
} else {
set_xlabel = 'set xlabel ''[00ζ]'' '
set_label1 = 'set label 1 ''Σ_1(0)'' at graph 0.5,0.5'
}
set macros
@set_xlabel
@set_label1
Вместо использования macros
вы также можете использовать eval(set_xlabel)
, что позволит вам определить такую функцию, как:
set_label1(x,y) = sprintf('set label 1 ''$\Sigma_1(0)$'' at graph %f,%f', x, y)
eval(set_label1(0.5,0.5))
Похожие вопросы
Новые вопросы
gnuplot
Gnuplot - это портативная графическая утилита, управляемая из командной строки, для Linux, OS / 2, MS Windows, OSX, VMS и многих других платформ. Используйте этот тег для вопросов о программном использовании Gnuplot; отладка интерактивного использования не по теме.
{/Symbol a}
должен работать с греческими символами (в этом примере альфа). но это не сработало в wxt! Разве конструкция{/Symbol}
не должна работать?set termoption enhanced; set xlabel '{/Symbol a}'; plot x
.