在 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]"
这会产生如下输出
我的数据文件如下图
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]"
这会产生如下输出