Gnuplot 4.6.5
I wanted to plot a histogram plot.
I tried the demo here: http://gnuplot.sourceforge.net/demo/histograms.2.gnu with a separate datefile: https://dl.dropboxusercontent.com/u/45318932/immigration.dat . And it worked:
However, when I tried to put the separate data file as inline data into the script file:
# set terminal pngcairo transparent enhanced font "arial,10" fontscale 1.0 size 500, 350
# set output 'histograms.2.png'
set boxwidth 0.9 absolute
set style fill solid 1.00 border lt -1
set key inside right top vertical Right noreverse noenhanced autotitles nobox
set style histogram clustered gap 1 title offset character 0, 0, 0
set datafile missing '-'
set style data histograms
set xtics border in scale 0,0 nomirror rotate by -45 offset character 0, 0, 0 autojustify
set xtics norangelimit font ",8"
set xtics ()
set title "US immigration from Northern Europe\nPlot selected data columns as histogram of clustered boxes"
set yrange [ 0.00000 : 300000. ] noreverse nowriteback
i = 22
plot '-' using 6:xtic(1) ti col, '' u 12 ti col, '' u 13 ti col, '' u 14 ti col
# IMMIGRATION BY REGION AND SELECTED COUNTRY OF LAST RESIDENCE
#
Region Austria Hungary Belgium Czechoslovakia Denmark France Germany Greece Ireland Italy Netherlands Norway Sweden Poland Portugal Romania Soviet_Union Spain Switzerland United_Kingdom Yugoslavia Other_Europe TOTAL
1891-1900 234081 181288 18167 - 50231 30770 505152 15979 388416 651893 26758 95015 226266 96720 27508 12750 505290 8731 31179 271538 - 282 3378014
1901-1910 668209 808511 41635 - 65285 73379 341498 167519 339065 2045877 48262 190505 249534 - 69149 53008 1597306 27935 34922 525950 - 39945 7387494
1911-1920 453649 442693 33746 3426 41983 61897 143945 184201 146181 1109524 43718 66395 95074 4813 89732 13311 921201 68611 23091 341408 1888 31400 4321887
1921-1930 32868 30680 15846 102194 32430 49610 412202 51084 211234 455315 26948 68531 97249 227734 29994 67646 61742 28958 29676 339570 49064 42619 2463194
1931-1940 3563 7861 4817 14393 2559 12623 144058 9119 10973 68028 7150 4740 3960 17026 3329 3871 1370 3258 5512 31572 5835 11949 377566
1941-1950 24860 3469 12189 8347 5393 38809 226578 8973 19789 57661 14860 10100 10665 7571 7423 1076 571 2898 10547 139306 1576 8486 621147
1951-1960 67106 36637 18575 918 10984 51121 477765 47608 43362 185491 52277 22935 21697 9985 19588 1039 671 7894 17675 202824 8225 16350 1325727
1961-1970 20621 5401 9192 3273 9201 45237 190796 85969 32966 214111 30606 15484 17116 53539 76065 3531 2465 44659 18453 213822 20381 11604 1124492
e
Here is the modified script: https://dl.dropboxusercontent.com/u/45318932/histograms.plt
Now it does work properly, only showing the result for Denmark:
There are three lines of the same warnings in the Gnuplot terminal:
"C:\Documents and Settings\leoking\My Documents\temp\histograms.plt", line 27: warning: Skipping data file with no valid points
It is really important to be able to use the inline data for me. Helps would be much appreciated.
The problem is that when you use plot '-'
, the data up until the e
is consumed and can't be used again. When you use ''
in subsequent plots on the same line, it's just shorthand for the name of the previous file descriptor. It doesn't mean reuse what has already been read, it means read it again.
A really lousy way of making it work, which proves the point I've made above, is by simply having four copies of the data in a row in your script.
Slightly better would be to at least trim the data down to the parts you're interested in. Note the change in column; each one is now using 2
:
plot '-' using 2:xtic(1) ti col, '' u 2 ti col, '' u 2 ti col, '' u 2 ti col
# IMMIGRATION BY REGION AND SELECTED COUNTRY OF LAST RESIDENCE
#
Region Denmark
1891-1900 50231
1901-1910 65285
1911-1920 41983
1921-1930 32430
1931-1940 2559
1941-1950 5393
1951-1960 10984
1961-1970 9201
e
Region Netherlands
1891-1900 26758
1901-1910 48262
1911-1920 43718
1921-1930 26948
1931-1940 7150
1941-1950 14860
1951-1960 52277
1961-1970 30606
e
Region Norway
1891-1900 95015
1901-1910 190505
1911-1920 66395
1921-1930 68531
1931-1940 4740
1941-1950 10100
1951-1960 22935
1961-1970 15484
e
Region Sweden
1891-1900 226266
1901-1910 249534
1911-1920 95074
1921-1930 97249
1931-1940 3960
1941-1950 10665
1951-1960 21697
1961-1970 17116
e
Just to give another peek to the upcoming version 5.0: There you can define reuseable, internal data blocks as follows:
$data <<EOF
1 2 3
2 3 4
3 4 5
EOF
plot $data using 1:2, '' using 1:3
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With