ripat
ripat

Reputation: 3236

Gnuplot grid format xtics mxtics

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.

Upvotes: 11

Views: 39284

Answers (4)

Antonoffee
Antonoffee

Reputation: 121

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 :).

Upvotes: 12

Ian D. Allen
Ian D. Allen

Reputation: 221

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

Upvotes: 5

ripat
ripat

Reputation: 3236

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)

Upvotes: 6

mgilson
mgilson

Reputation: 310287

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)

Upvotes: 1

Related Questions