8
votes

How can I define one format for the main grid (xtics, ytics) and another one for the minor tics (mxtics and mytics)?

I tried:

set style line 100 lt 1 lc rgb "gray" lw 2
set style line 101 lt 1 lc rgb "gray" lw 1
set grid xtics ytics ls 100
set grid mxtics mytics ls 101

But this take the last defined lw (1) for all grids.

4
This is a little confusing because the grid is only drawn at the major tic marks.mgilson

4 Answers

9
votes
set style line 100 lt 1 lc rgb "gray" lw 2
set style line 101 lt 0.5 lc rgb "gray" lw 1

set grid mytics ytics ls 100, ls 101
set grid mxtics xtics ls 100, ls 101

It really works :).

5
votes

gnuplot will also draw grid lines at minor tics using set grid mxtics mytics.

To set different line styles for major grid lines and minor grid lines, use the correct syntax (with a comma separating the major line style from the minor line style):

set style line 100 lt 1 lc rgb "blue" lw 2
set style line 101 lt 1 lc rgb "gray" lw 1
set grid mxtics mytics ls 100, ls 101
4
votes

The minor tics mxtics and mytics are also drawn but with the same format than the main tics. And that is a problem when you want to differentiate them. Your solution with the arrows did the trick but I found it easier to first draw the minor ticks and than overwrite them with arrows for the main ones. Tanks.

set style line 100 lt 2 lc rgb "blue" lw 1
set style line 101 lt 1 lc rgb "gray" lw 1

# first draw the minor tics
set xrange [0:1]
set mxtics 10
set yrange [0:1]
set mytics 5
set grid mxtics mytics ls 101

# then the main tics
dx=0.2  #grid spacing in x
set for [i=1:5] arrow from graph i*dx,graph 0 to graph i*dx,graph 1 nohead front ls 100
dy=0.2  #grid spacing in y
set for [i=1:5] arrow from graph 0,graph i*dy to graph 1,graph i*dy nohead front ls 100

plot sin(x)
1
votes

In gnuplot, the grid is only drawn at the location of the major tic marks, however, if you want to have two distinct grids, you can use arrows:

set style line 101 lt 1 lc rgb "gray" lw 1
dx=.1  #grid spacing in x
set for [i=1:10] arrow from graph i*dx,graph 0 to graph i*dx,graph 1 nohead front ls 101 
set xrange [0:1]
plot sin(x)