Gnuplot 3D从文件绘制,在x,y和z-ticks上没有足够的详细值

时间:2017-01-13 22:57:44

标签: plot gnuplot

我想要绘制一个简单的数据作为3D绘图(3列除以逗号):

33.26,0.0000001,1
67.02,0.0000010,2
101.64,0.0000100,3
137.53,0.0001000,4
175.06,0.0010000,5
214.59,0.0100000,6
256.47,0.1000000,7
301.09,1.0000000,8
348.78,10.0000000,9
399.92,100.0000000,10
454.87,1000.0000000,11
513.99,10000.0000000,12
577.65,10000.0000000,13
646.22,10000.0000000,14
720.05,10000.0000000,15
799.51,10000.0000000,16
884.96,10000.0000000,17
976.77,10000.0000000,18
1075.29,10000.0000000,19
1180.89,10000.0000000,20
1293.92,10000.0000000,21
1414.77,10000.0000000,22
1431.83,10000.0000000,23
1449.15,10000.0000000,24
1466.97,10000.0000000,25
1485.79,10000.0000000,26
1505.97,10000.0000000,27
1527.88,10000.0000000,28
1551.87,10000.0000000,29
1578.3,10000.0000000,30
1607.56,10000.0000000,31
1639.98,10000.0000000,32
1675.95,10000.0000000,33
1715.82,10000.0000000,34
1759.96,10000.0000000,35
1808.72,10000.0000000,36
1862.49,10000.0000000,37
1921.6,10000.0000000,38
1986.44,10000.0000000,39
2057.35,10000.0000000,40
2134.71,10000.0000000,41
2218.87,10000.0000000,42
2310.2,10000.0000000,43
2409.06,10000.0000000,44
2515.83,10000.0000000,45

我写了一个简单的脚本来绘制上述数据:

#!/usr/bin/gnuplot

set palette rgbformulae 33,13,10
set datafile separator ","

set terminal postscript eps size 10.5, 5.62 enhanced color font 'Helvetica,20' linewidth 2
set output 'test.eps'

set xlabel "time [s] (no operation)" offset -4, 0, 0
set xtics left offset 0,-0.3 rotate by 45 right
set xrange [0:400]

set ylabel "ranges" offset 2, 0, 0
set ytics left offset 0,-0.5

set zlabel "devices" offset -4, 0, 0 
set zrange [0:50]
set autoscale

set title " "
set key inside left top;

set dgrid3d 30,30
set hidden3d

set style line 1 linecolor rgb '00FF00'  linetype 4 linewidth 1 

splot "data.csv" u 1:2:3 title "" with lines  palette 

我的输出:

enter image description here

正如大家所看到的,输出图像(或者,我应该说),x,y和z轴上的x,y和z刻度都不够详细。很难说输出图像是用这个数据绘制的。

有没有办法可以让我操作x,y和z刻度,以某种优雅的方式从文件中获取?

我还希望图像在新的x,y和z刻度下更具可读性,所以我认为10000.0000000值只应出现一次,当它第一次出现在数据文件中时。

谢谢。

1 个答案:

答案 0 :(得分:2)

不完全是您的问题的答案,这是我个人的意见,但您可能对这些想法感兴趣:

  • 数据似乎不是网格数据,因此我不会使用任何类型的曲面图。
  • 仅绘制3d中的数据点不会产生有用的图像,它只是空间中的一条线。我会尝试使用包含高度信息作为颜色的2D图。
  • 我会使用y轴的logscale。

这导致以下脚本:

set terminal pngcairo
set output 'test.png'

set datafile separator ","
set palette rgbformulae 33,13,10

# Set margins to keep colorbox label inside the picture
set lmargin screen 0.12
set rmargin screen 0.85

set xlabel "time [s] (no operation)"
set ylabel "ranges"
set cblabel "devices"

unset key

set yrange  [1e-8:1e5]
set ytics format "1e%+T"
set logscale y

set view map
set cbrange [0:50]
set zrange [0:50]

splot "data.csv" u 1:2:3 w p pt 7 palette ,\
      "data.csv" every 5::4 u ($1+0):($2/3):(0):($3 != 30 ? 3 : "") with labels

它还会打印某些数据点的z标签,出于间距原因跳过30个。

结果如下:

enter image description here