summaryrefslogtreecommitdiff
path: root/plot.sh
blob: 3874722540d09932b8f56409f9e91dee236ba53d (plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash

SELECT="$1"
OUTPUT="$2"

DATA=`mktemp`
cat > "$DATA"

function gnuplot_conf {
	# data format
	echo "set timefmt '%Y-%m-%d'"

	# X axis
	echo "set xlabel ''"
	echo "set format x '%b %d'"
	echo "set xdata time"
	echo "set xtics 604800 rotate by 45 right font ', 7'"
	echo "unset mxtics"

	# grid
	echo "set grid"

	# legend
	echo "set key outside bottom center"

	# file output (for scripts)
	if [ ! -z "$OUTPUT" ]; then
		echo "set terminal pngcairo size 960, 480 font 'Liberation Serif,12'"
		echo "set output '$OUTPUT'"
	fi

	# timestamp
	TS="{/*0.7 `date`}"

	if [ "$SELECT" == "population" ]; then
		echo "set title \"Population over time\n$TS\""
		echo "set ylabel 'Players'"
		echo -n "plot '$DATA' "
		echo -n    "using 1:2 title 'Mean player count', "
		echo    "'' using 1:9 title 'Peak player count'"
	elif [ "$SELECT" == "ping" ]; then
		echo "set title \"Mean ping over time\n$TS\""
		echo "set key off"
		echo "set ylabel \"Mean ping [ms]\""
		echo -n "plot '$DATA' using 1:3 axes x1y1"
	elif [ "$SELECT" == "ping-distrib" ]; then
		echo "set title \"Ping distribution over time\n$TS\""
		echo "set ylabel 'Fraction of players'"
		echo "set yrange [0:1]"
		echo -n "plot '$DATA'"
		echo -n    "using 1:4 title 'Above 60ms', "
		echo -n "'' using 1:5 title 'Above 110ms', "
		echo -n "'' using 1:6 title 'Above 160ms', "
		echo -n "'' using 1:7 title 'Above 210ms', "
		echo    "'' using 1:8 title 'Above 260ms'"
	else
		echo "SELECT is wrong" 1>&2
	fi
}

if [ -z "$OUTPUT" ]; then
	gnuplot -p -c <(gnuplot_conf)
else
	gnuplot -c <(gnuplot_conf)
fi

rm -f "$DATA"