Использование команды set link в Gnuplot

#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]"  

Это приводит к такому результату, как График