パイチャート
Q:パイチャートを描きたいのですが.
A:
gnuplotはあまりビジネス向けのプロットのサポートが充実しておらず,
永らくパイチャートを描くのは難しかったのですが,plot に円(あるいは円弧)
を描くスタイル
circlesが実装されたので可能になりました.
- スクリプト
stats 'pie-chart.dat' u 2 nooutput
sum = STATS_sum
R = 1
set xrange [-R:R]
set yrange [-R:R]
set size ratio -1
unset key
unset border
unset tics
set style fill solid 0.6
set term pngcairo enh font "Times,10" size 480,480
set out "pie-chart.png"
set title "plot with circles" font "Helvetica,18"
cum = 0
k = 0
ac = 0
ap = 0
ag = 0
LR = 0.7
plot 'pie-chart.dat' u (cum=cum+$2, k=k+1, 0):(0):(R): \
((cum-$2)/sum*360):(cum/sum*360):(k) \
w circle lw 0.1 lc variable, \
'' u (ap=ac, ac=ac+$2, ag=(ac+ap)/sum*pi, LR*R*cos(ag)):\
(LR*R*sin(ag)):1 w labels tc rgb "gray20" font "Times,16"
#
# 'pie-chart.dat' : file including data for pie chart
#
# apple 100
# orange 80
# peach 60
# pear 40
# strawberry 30
円の中心位置(cx,cy),半径(r),加えて円弧の開始角と終了角(as,af)さらに加
えて色の指定をデータファイル('data.file')から読み込んで円を描く命令は
次のようなものです.
plot 'data.file' w circles
plot 'data.file' w circles lc variable
データファイルの書式は,以下の順に並んでいることを既定として
います.
# "data.file"
cx cy r as af index
このスクリプトでは,円弧の開始角と終了角を算出するために(一般のデータフ
ァイルには,そもそもそんな値は含まれてないのが普通ですね),
列指定子 using ( ):( )... の括弧の中で,
カンマで区切って,行に含まれるデータを$1,$2,...で参照した演算
(値の代入 etc.)を実行させています.括弧内の最後の結果が用いられる規則
になっているので,その前で任意の演算ができるという
トリッキーな使い方です.外部コマンドの助けを借りずにgnuplotのコマ
ンドだけで実現しようとすると,このような分かりにくいものとなってしまいま
す.
- 実行結果