在 Gnuplot 中使用 set link 命令

Using set link command in 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 4} 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 命令应该是什么?

顾名思义,gnuplot 需要 inverse 函数,您必须对其进行解析求解。您已经为

正确完成了
x2 = 1000 / x → x = 1000 / x2

同样:

x2 = x + k → x = x2 - k

简单写下映射函数,然后求解x。

如果你的 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/K 为单位的反温度和一些测量值 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 4} 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]"

这会产生如下输出