#gnuplot
Вопрос:
Мой файл данных показан ниже
x-axis (1/T) y-axis 6.78E-01 -1.907881356 6.73E-01 -1.828333333 6.69E-01 -1.749849498 6.64E-01 -1.672408638 6.60E-01 -1.595990099 6.56E-01 -1.52057377 6.51E-01 -1.446140065 6.47E-01 -1.372669903 6.43E-01 -1.300144695 6.39E-01 -1.228546326 6.35E-01 -1.157857143 6.31E-01 -1.088059937 6.27E-01 -1.019137931 6.23E-01 -0.951074766 6.19E-01 -0.883854489 6.15E-01 -0.817461538 6.12E-01 -0.751880734 6.08E-01 -0.687097264 6.04E-01 -0.623096677
Сценарий Gnuplot приведен ниже
set terminal postscript eps enhanced colour font 'Times-Roman,12' size 6in,5in set output "JNM_2020_F2.eps" set xtics out scale 1.5 set ytics out scale 1.5 set tics font ", 16" set xtics nomirror set xlabel "10^{3}{/Symbol 264} 1/T (K^{-1})" font "Times-Bold,20" set ylabel "y" font "Times-Bold,20" set key outside right top set x2tics out scale 1.5 set link x2 via 1000./x inverse 1000./x set x2tics 50 set x2label "Temperature (K)" font "Times-Bold,20" plot [0.60:0.70] 'Data.dat' u 1:2 with points pt 4 ps 1.75 lt -1 title "Ref. [7]"
По существу, графики по оси x 1000/T и связанные графики по оси x2 T (в Кельвине). Сценарий работает нормально. Теперь предположим, что ось x является переменной p
, а связанная ось x2 должна быть p k
, где k
константа, тогда какой должна быть set link
команда? В файле данных столбец 1 указан как 1/T (в обратном Кельвине), поэтому, если мне нужно построить связанную ось x2 как температуру в градусах Цельсия, то отображение будет от f(x) до 1/f(x)- 273. Какой должна быть set link
команда?
Ответ №1:
Как следует из названия, gnuplot требует обратной функции, которую вы должны решить аналитически. Вы сделали это правильно для
x2 = 1000 / x → x = 1000 / x2
Аналогично:
x2 = x k → x = x2 - k
Просто запишите функцию отображения, а затем решите ее для x.
Ответ №2:
Если у вас есть значения x в 1/K, то вам нужно set link x2 via 1./x-273.15 inverse 1./(x 273.15)
получить Цельсий.
Рассмотрим следующий mydata.dat
файл:
T [°C] T [K] inv. T [1/K] val -15 258.15 0.003873 1.55e -4 269.15 0.003715 1.39e 0 273.15 0.003660 1.34e 1 274.15 0.003647 1.31e 12 285.15 0.003506 1.18e 14 287.15 0.003482 1.11e
из которого вы используете столбцы 3 и 4, обратную температуру в 1/К и некоторую измеренную величину val. Чтобы построить этот график, используйте
set xlabel "inverse temperature [1/K]" set ylabel "some measured quantity" set x2label "temperature [°C]" set xtics nomirror set x2tics 5 set link x2 via 1./x-273.15 inverse 1./(x 273.15) p "mydata.dat" u 3:4
В вашем случае значения x равны не 1/T, а 1000/T, поэтому используйте ваше форматирование в целом:
set terminal postscript eps enhanced colour font 'Times-Roman,12' size 6in,5in set output "JNM_2020_F2.eps" set xtics out scale 1.5 set ytics out scale 1.5 set tics font ", 16" set xtics nomirror set xlabel "10^{3}{/Symbol 264} 1/T (K^{-1})" font "Times-Bold,20" set ylabel "y" font "Times-Bold,20" set key outside right top set x2tics out scale 1.5 set link x2 via 1000./x-273.15 inverse 1000./(x 273.15) set x2tics 50 set x2label "Temperature [°C]" font "Times-Bold,20" plot [0.60:0.70] 'Data.dat' u 1:2 with points pt 4 ps 1.75 lt -1 title "Ref. [7]"