-
Notifications
You must be signed in to change notification settings - Fork 0
/
simple_scatter_plot.py
70 lines (60 loc) · 1.65 KB
/
simple_scatter_plot.py
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
68
69
70
"""Plot multiple sets of x,y points as a rudimentary scatter plot.
stdin:
Input of the form:
<line_label1>
<x1,y1>
...
<xn,yn>
...
<line_labeln>
<x1,y1>
...
<xn,yn>
Output:
A rudimentary scatter plot of the input data.
"""
import sys
from collections import defaultdict
import matplotlib.pyplot as plt
from matplotlib import rc
import rc_conf
from pylab import savefig
import argparse
from itertools import cycle
import matplotlib.lines as matplotlib_lines
import matplotlib as mpl
color_set = ['#e41a1c','#377eb8','#4daf4a',
'#984ea3','#ff7f00','#FFCC00',
'#a65628','#f781bf','#999999']
color_set = map(lambda x: mpl.colors.ColorConverter().to_rgba(x, alpha=0.1),
color_set)
marker_set = ['v','^','<',
'>','o','s',
'p','d','x']
mpl.rcParams['axes.color_cycle'] = color_set
def scatter(data, labels):
c_cyc = cycle(color_set)
m_cyc = cycle(marker_set)
for lab in labels:
d = data[lab]
xs, ys = zip(*d)
plt_args = {}
plt_args['markerfacecolor'] = 'none'
plt_args['alpha'] = 0.1
plt_args['markeredgecolor'] = next(c_cyc)
plt_args['marker'] = next(m_cyc)
plt.plot(xs, ys,label=lab,linestyle='none',**plt_args)
plt.legend(loc='upper right')
plt.show()
if __name__ == '__main__':
labels = []
label_data = defaultdict(list)
curr_label = None
for line in sys.stdin:
fields = line.strip().split(',')
if len(fields) == 1:
curr_label = fields[0]
labels.append(curr_label)
else:
label_data[curr_label].append(map(float, [fields[0], fields[1]]))
scatter(label_data, labels)