Gnuplot 5.0。DIY 4轴蜘蛛图

图片
在处理商品的数据可视化时,必须要有4个轴,且所有轴上都带有正标签。


与其他商品图表一样,我决定使用gnuplot。首先,我看了官方网站,那里有很多例子。当我找到必要的示例时,我感到非常高兴(我认为文件不会做很多工作,而且会很漂亮)。
图片
快速复制代码,运行它。我得到一个错误。我明白。原来,我有一个旧的gnuplot(Version 5.0 patchlevel 3 last modified 2016-02-21),但没有。

知道gnuplot的灵活性后,他开始在万维网上四处逛逛,并在stackoverflow上遇到了几个合适的示例(使用Gnuplot在蜘蛛图上使用双x轴,以及如何在Gnuplot中创建蜘蛛图?)和github(gnuplot-radarchart)。他们成为起点。

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

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,以便零不会干扰原点。

在坐标中心混合零无偏移
在坐标中心混合零。
所有间隔*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从递减开始计数
有关更多信息,请参见Xrange部分

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)始终等于零。
尽管所有四个轴都为正,但由于某些数据位于主轴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 #  

结果
总
完整代码
#!/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


All Articles