Gnuplot:带有内联数据的直方图

时间:2014-07-31 10:47:38

标签: gnuplot bar-chart

Gnuplot 4.6.5

我想绘制直方图。

我在这里尝试了演示:http://gnuplot.sourceforge.net/demo/histograms.2.gnu和一个单独的日期文件:https://dl.dropboxusercontent.com/u/45318932/immigration.dat。它起作用了:

enter image description here

但是,当我尝试将单独的数据文件作为内联数据放入脚本文件时:

# 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

以下是修改后的脚本:https://dl.dropboxusercontent.com/u/45318932/histograms.plt

现在它确实可以正常工作,只显示丹麦的结果:

enter image description here

Gnuplot终端中有三行相同的警告:

 "C:\Documents and Settings\leoking\My Documents\temp\histograms.plt", line 27: warning: Skipping data file with no valid points

能够为我使用内联数据非常重要。非常感谢帮助。

2 个答案:

答案 0 :(得分:4)

问题在于,当您使用plot '-'时,直到e消耗的数据才会被使用,并且无法再次使用。当您在同一行的后续图表中使用''时,它只是前一个文件描述符名称的简写。它并不意味着重用已经读过的东西,它意味着再次阅读它。

使其成功的一种非常糟糕的方式,证明了我上面提到的观点,就是在脚本中连续创建四个数据副本。

稍微好一点的是至少将数据修剪到你感兴趣的部分。注意列中的变化;现在每个人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

答案 1 :(得分:4)

再看看即将推出的5.0版本:您可以按如下方式定义可重复使用的内部数据块:

$data <<EOF
1 2 3
2 3 4
3 4 5
EOF
plot $data using 1:2, '' using 1:3