-
Notifications
You must be signed in to change notification settings - Fork 10
/
cve-pie-chart.plot
53 lines (41 loc) · 1.83 KB
/
cve-pie-chart.plot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
set terminal svg size 1920,1080 dynamic font ",24"
set title "curl CVE severity distribution" font ",48"
filename = 'tmp/cve-pie-chart.csv'
rowi = 1
rowf = 4
# obtain sum(column(2)) from rows `rowi` to `rowf`
set datafile separator ';'
stats filename u 2 every ::rowi::rowf noout prefix "A"
# rowf should not be greater than length of file
rowf = (rowf-rowi > A_records - 1 ? A_records + rowi - 1 : rowf)
angle(x)=x*360/A_sum
percentage(x)=x*100/A_sum
# circumference dimensions for pie-chart
centerX=0
centerY=0
radius=1
# label positions
yposmin = 0.0
yposmax = 0.95*radius
xpos = 1.3*radius
ypos(i) = yposmax - i*(yposmax-yposmin)/(1.2*rowf-rowi)
#-------------------------------------------------------------------
# now we can configure the canvas
set style fill solid 1 # filled pie-chart
unset key # no automatic labels
unset tics # remove tics
unset border # remove borders; if some label is missing, comment to see what is happening
set pixmap 1 "stats/curl-symbol-light.png"
set pixmap 1 at screen 0.28, 0.30 width screen 0.20 front
set size ratio -1 # equal scale length
set xrange [-radius:2*radius] # [-1:2] leaves space for labels
set yrange [-radius:radius] # [-1:1]
#-------------------------------------------------------------------
pos = 0 # init angle
colour = 0 # init colour
# 1st line: plot pie-chart
# 2nd line: draw colored boxes at (xpos):(ypos)
# 3rd line: place labels at (xpos+offset):(ypos)
plot filename u (centerX):(centerY):(radius):(pos):(pos=pos+angle($2)):(colour=colour+1) every ::rowi::rowf w circle lc var,\
for [i=0:rowf-rowi] '+' u (xpos):(ypos(i)) w p pt 5 ps 4 lc i+1,\
for [i=0:rowf-rowi] filename u (xpos):(ypos(i)):(sprintf('%s %.1f%%', stringcolumn(1), percentage($2))) every ::i+rowi::i+rowi w labels left offset 3,0