Search code examples
gnuplot

gnuplot, rotating xtics at 90 degree


How can I rotate xtics at 90 degree using gnuplot. Below I tried it but it gives me strange results (xticks need to be shifted downward). Any idea?

set terminal pngcairo  transparent enhanced font "arial,10" fontscale 1.0 size 600, 400 
set output 'datastrings.2.png'
set key fixed right top vertical Right noreverse enhanced autotitle columnhead nobox
set label 1 "Generate plot labels from first row in each column" at graph 0.02, 0.85, 0 left norotate back textcolor rgb "#56b4e9"  nopoint
set label 2 "Generate x-axis labels from first column in each row" at graph 0.02, 0.8, 0 left norotate back textcolor rgb "#56b4e9"  nopoint
set style data linespoints
set xtics  norangelimit 
set xtics   ()
set xtics rotate by 90
set title "Auto-labeling plots from text fields in datafile" 
set xrange [ * : * ] noreverse writeback
set x2range [ * : * ] noreverse writeback
set ylabel "mm" 
set yrange [ 0.00000 : 200.000 ] noreverse nowriteback
set y2range [ * : * ] noreverse writeback
set zrange [ * : * ] noreverse writeback
set cbrange [ * : * ] noreverse writeback
set rrange [ * : * ] noreverse writeback
NO_ANIMATION = 1
## Last datafile plotted: "ctg-y2.dat"
plot 'ctg-y2.dat' using 2:xticlabel(1) index 2,      ''           using 2 index 3

enter image description here


Solution

  • Check help xtics, there is the possibilty to right align your labels. Just for illustration "August" is not abbreviated in order to demonstrate the right alignment of the rotated text.

    Code:

    ### right align xtic labels
    reset session
    
    $Data <<EOD
    Jan 1
    Feb 2
    Mar 3
    Apr 4
    May 5
    Jun 6
    Jul 7
    August 8
    Sep 9
    Oct 10
    Nov 11
    Dec 12
    EOD
    
    set xtics rotate by 90 right
    
    plot $Data u 2:xtic(1) w lp pt 7
    ### end of code
    

    Result:

    enter image description here