Gnuplot 5.0。 DIY 4 轴蜘蛛图

Gnuplot 5.0。 DIY 4 轴蜘蛛图
在为一篇文章进行数据可视化时,有必要拥有 4 个轴,并且所有轴上都带有正标签。

与本文中的其他图表一样,我决定使用 图形。 首先我看了一下官方网站,上面有很多例子。 当我找到合适的人时我很高兴 例子 (我想稍微处理一下文件,它会很漂亮)。
Gnuplot 5.0。 DIY 4 轴蜘蛛图
我很快复制了代码并运行了它。 我收到一个错误。 我正在想办法。 原来我有一个旧的 gnuplot (Version 5.0 patchlevel 3 last modified 2016-02-21)而他不能那样做。

了解了 gnuplot 的灵活性后,我开始搜索万维网,并在 stackoverflow 上发现了几个合适的示例(使用 Gnuplot 绘制蜘蛛图上的双 x 轴 и 如何在 Gnuplot 中创建蜘蛛图?)和github(gnuplot 雷达图)。 他们成为了起点。

此外,我对命令的操作导致了以下结果:

0) 禁用 边界

unset border

1) 创建 4 条零线 - 2 条主线和 2 条附加线:

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

关于零线的几句话 文件资料。 此操作允许您将轴移至图片的中心。 并且需要额外的标记来显示正刻度。

2) 设置轴上刻度的显示:

max = 1.5 # Для гибкости
min = -max
set xtics  axis  0,.5,max in scale 0.5,0.25 mirror norotate  autojustify offset 0.35
set ytics  axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify            

轴上有刻度,还有更多设置。
axis - 刻度线所在的位置,在轴上或(边界 - 在边界上)。
对于轴 x,向右 0,.5,max。 第一个数字是倒计时的开始,第二个是步骤,第三个是倒计时的结束。 对于第一个从 0,其余的从 0.5,这样零点就不会干扰原点。

Gnuplot 5.0。 DIY 4 轴蜘蛛图
Gnuplot 5.0。 DIY 4 轴蜘蛛图

在坐标中心混合零点。
所有间隔 *tics 配置为 0,.5,max
没有 offset 0.35xtics

调整 scale 0.5,0.25 mirror 向轴添加凹口。 如果你玩弄这些数字,它们的大小就会改变。
我也输入变量 max, min,借助它我可以控制图形轴的边界。
有关设置刻度的更多信息可以在 参考资料 部分的文档中找到 Xtics.

3)设置轴范围:

set xrange  [ min : max ] 
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

这里需要注意的是,2个轴从 min 用于放大和 2 个轴 - 带 max 减少。
部分中的附加信息 X范围.

4) 给轴命名并漂亮地放置它们:

set label "H_1" at  0,       max center offset char  2, 0
set label "H_2" at  max+0.1, 0   center offset char -1, 1
set label "H_3" at  0,       min center offset char -2, 0
set label "H_4" at  min,     0   center offset char  0, 1

5)形成输入数据
每个图表有 2 列。 行号 - 轴号,关闭循环的第五行。 奇数列 - 坐标 x, 甚至 - y。 由于所有点都位于轴上,因此从对 (x, y) 一始终为零。
尽管所有 4 个轴都是正值,但有些数据被人为移至负半部分,因为它位于主轴上 x и y.

 0  1  0     1.21
 1  0  1.21  0   
 0 -1  0    -1.06
-1  0 -1.19  0   
 0  1  0     1.21 #Дубликат первой точки

导致
Gnuplot 5.0。 DIY 4 轴蜘蛛图
完整代码

#!/usr/bin/gnuplot -persist
#файл в кодировке cp1251 чтоб русские буквы отображались в eps

set encoding cp1251
set terminal postscript eps enhanced monochrome size 5cm,5cm
set output "./img/eps/fig2.eps"

unset border
set key at -2, 1.5 font 'LiberationSerif, 23' 
set key left top samplen 4.5

set xzeroaxis
set yzeroaxis
set x2zeroaxis
set y2zeroaxis

max = 1.5
min = -max

set xtics  axis  0,.5,max in scale 0.5,0.25 mirror norotate  autojustify offset 0.35 font 'LiberationSerif, 20
set ytics  axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20
set x2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20
set y2tics axis .5,.5,max in scale 0.5,0.25 mirror norotate  autojustify             font 'LiberationSerif, 20

set xrange  [ min : max ]
set yrange  [ min : max ]
set x2range [ max : min ]
set y2range [ max : min ]

set label "H_1" at  0,       max center offset char  2, 0   font 'LiberationSerif, 23'
set label "H_2" at  max+0.1, 0   center offset char -1, 1   font 'LiberationSerif, 23'
set label "H_3" at  0,       min center offset char -2, 0   font 'LiberationSerif, 23'
set label "H_4" at  min,     0   center offset char  0, 1   font 'LiberationSerif, 23'

set style line 1 linetype 1 pointtype 7 linewidth 3 linecolor black
set style line 2 linetype 2 pointtype 7 linewidth 3 linecolor black

plot 'data.csv' using  1:2 title "1" w lp ls 1 ,
     'data.csv' using  3:4 title "2" w lp ls 2

来源: habr.com

添加评论