gnuplot - 改变轴的比例

gnuplot - change scale of axis

我在cr.dat

中有以下数据
0.03 0.0227352
0.02 0.0276084
0.01 0.0386684
0.009 0.0407197
0.008 0.0431688
0.007 0.04612
0.006 0.0497781
0.005 0.0545085
0.004 0.0608376
0.003 0.069918
0.002 0.0844434

以及以下剧情脚本

set xtics ( 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01, 0.02, 0.03)
plot "cr.dat" u 1:2 title "cr";

生成这张图片的 plot cr

是否可以删除 0.01、0.02 和 0.03 之间的大空格?

我希望 set xtics 命令能够沿 x 轴均匀地绘制给定的控制点。但事实并非如此。

更新

我用 xticlabels 尝试了 Irregular gnuplot x-values 中建议的解决方案,但这会产生奇怪的 x 轴和 y 轴。

新的剧情剧本是

set xtics ( 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01, 0.02, 0.03)
plot "cr.dat" u xticlabels(1):2 title "cr";

结束结果 plot cr2

我是不是误会了什么?

使用

set logscale x

linear x 轴转换为 logarithm x 轴,这将在一定程度上标准化间隙。

或者,更改绘图的大小以获得更多 space

set term . . . size 1920, 1080

要获得均匀的 spaced xtics,您必须均匀地给出 space x 值。可以使用 xticlabel 函数为每个 x 值指定一个从数据文件中获取的自定义标签。请注意,此函数必须始终是您在 using 语句中给出的最后一个函数。

为了获得均匀的 space x 值,请使用包含在伪列 0 中的行号。所以,为了得到想要的情节,使用

plot 'cr.dat' using 0:2:xticlabel(1) title "cr"

使用行号作为 x 值,第二列的值作为 y 值,第一列的值作为 xtic 标签。

如果您希望值按升序排序,您有多种选择:

  1. 排序数据文件。
  2. 即时对数据文件进行排序(使用 Unix 命令行工具可以正常工作 sort:

    plot '< sort cr.dat' using 0:2:xticlabel(1)
    
  3. 使用行号的负值,这有效地为您提供了一个反转的 x 轴:

    plot 'cr.dat' using (-[=12=]):2:xticlabel(1)
    

后一条命令的结果是