Gnuplot:如何使用彩色背景和图案填充条形图

时间:2014-07-31 17:26:22

标签: gnuplot bar-chart

我想用彩色背景和图案填充条形图。在Gnuplot有可能吗?

我正在使用Gnuplot 4.6.5

我现在的代码:

# 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" 
i = 22
set yrange [0:2000]
set style line 1 lc rgb 'orange';
set style line 2 lc rgb 'pink';
plot for [i=2:7] 'data.dat' using i:xtic(1) ti col ls i%2+1;

数据文件:

Region  Denmark France Demark-Women France-women Demark-man France-men
1891-1900   1000 1100   500 600 500 500
1901-1910   1500 1600   1000 600 500 1000

以下是下载脚本的链接:https://dl.dropboxusercontent.com/u/45318932/histograms2.plt和数据文件:https://dl.dropboxusercontent.com/u/45318932/data.dat

脚本给了我:

enter image description here

我想要的是:

enter image description here

如果有人可以帮助我改进代码以产生第二个数字,我将不胜感激。感谢。

1 个答案:

答案 0 :(得分:9)

那个非常棘手,因为你不能改变填充图案的背景颜色。默认情况下,图案的背景颜色为白色,不透明或为空。

唯一可以充分操作的终端是lua tikz终端。在这里,我首先绘制所有颜色框,然后在第二次迭代中绘制填充图案。要使用新的迭代,我使用newhistogram选项,但会在图例中产生间隙。

要删除填充图案的白色背景,请使用sed从输出流中删除相关部分。非常hacky,但它确实有效:

set terminal lua tikz standalone size 5in, 3in color
set output '| sed ''s/\\gpfill{color=gpbgfillcolor}//g'' > histograms.tex'
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" 
i = 22
set yrange [0:2000]
set xrange [-1:2]
set style line 1 lc rgb 'orange';
set style line 2 lc rgb 'pink';
plot for [i=2:7] 'data.dat' using i:xtic(1) ti columnhead(i > 3 ? 10 : i) ls i%2+1 fillstyle solid noborder,\
     newhistogram at -1, \
     '' using 2 ti 'total' lt -1 fillstyle empty,\
     '' using 3 notitle lt -1 fillstyle empty,\
     '' using 4 title 'women' lt -1 fillstyle pattern 5,\
     '' using 5 notitle lt -1 fillstyle pattern 5,\
     '' using 6 title 'men' lt -1 fillstyle pattern 6,\
     '' using 7 notitle lt -1 fillstyle pattern 6

set output
system('pdflatex histograms.tex')

4.6.5的结果:

enter image description here

刚刚发现,你可以指定模式没有背景颜色,如

... fillstyle pattern 6 transparent

哪些终端有效取决于gnuplot版本:

plot x with filledcurves x1 fillstyle solid fc rgb '#990000',\
     x with filledcurves x1 fillstyle pattern 4 transparent lc rgb 'white'

结果(使用svg终端和版本4.6.5):

enter image description here