Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

gnuplot pm3d gets white lines

I draw a spectrogram with gnuplot version 4.6. I ensured it is the newest version here: http://www.gnuplot.info/download.html

Gnuplot is installed from Debian repository.

The plot area and the scale on the right includes strange white lines. They seem to separate the data. On plot area with dense data they look like checkered pattern:

http://imageshack.us/a/img822/6219/linese.png

Lines are less visible on the scale but also they are there. There are only horizontal lines on the scale.

I thought it's the case of monitor gamut or something but lines occur also with pdf monochrome.

My code is:

#!/usr/bin/gnuplot

set term pdf
# set style fill noborder # checked with and without this line
set output "../results1/fft.pdf"
set pm3d map
splot "../results1/fft.dat"

As you can read there I tried using option noborder but both with and without the lines exist.

Example data can be:

0 1 3
0 2 3
0 3 4
0 4 2
0 5 2
0 6 3
0 7 4
0 8 3

1 1 3
1 2 2
1 3 4
1 4 2
1 5 2
1 6 3
1 7 4
1 8 4

2 1 2
2 2 4
2 3 4
2 4 3
2 5 2
2 6 4
2 7 2
2 8 2

3 1 2
3 2 3
3 3 3
3 4 4
3 5 2
3 6 2
3 7 2
3 8 2

Do you have any idea how to get rid of this lines?

like image 872
nuoritoveri Avatar asked Nov 04 '22 15:11

nuoritoveri


1 Answers

This has plagued me for some time as well. The best workaround I have is inspired by this post. Basically you can use

plot "datafile" with image

instead of the splot command. There are some subtle differences in how the data is plotted, but this creates a .pdf without those nasty gaps between the colored areas, and a much smaller file.

Note this only really works for data which forms a rectangular grid! If the datafile is in a matrix format (no x or y data except for the number of data points) which for your example would be

3 3 2 2
3 2 4 3
...

(z-value from first row of each block makes the first row, etc.) you can use the command

plot 'datafile' ($1*xincr - x0):($2*yincr - y0):3 matrix with image

The stuff in parens is optional, but allows you to scale the resulting plot to the correct x and y values. (xincr is a gnuplot variable you would have to set for the x-increment in the data, x0 is the x offset, etc.)

If this results in a white gap around the plot, use the plot command once, rescale the axes, and plot again, e.g.

set terminal unknown
plot 'datafile' ($1*xincr - x0):($2*yincr - y0):3 matrix with image
set xr[GPVAL_DATA_X_MIN:GPVAL_DATA_X_MAX]
set yr[GPVAL_DATA_Y_MIN:GPVAL_DATA_Y_MAX]
set output "fft.pdf"
replot

Second answer

I find that this effect is pdf-viewer-dependent. For instance, it shows up in evince under linux but not okular. Depending on your application you could just use a different viewer.

like image 89
andyras Avatar answered Nov 15 '22 08:11

andyras