ich muss ein Scatterplot mit matplotlib machen. Auf die x-Achse sollen Linknamen (WLAN-Verbindungen) und die y-Achse beschreibt die mittlere Qualität des Links in Prozent.
Code: Alles auswählen
#!/usr/bin/python -t
# -*- coding: utf-8 -*-
import pylab
import matplotlib
import matplotlib.pyplot as pyplot
def plot():
# get high quality links
links = [(('t9-149', 't9-146'), 80.826086956521735), (('t9-k60a', 't9-k61'), 85.411764705882348), (('t9-169', 't9-137'), 80.82352941176471), (('t9-k60b', 't9-k60a'), 81.5), (('t9-k60b', 't9-k61'), 84.952380952380949), (('a6-009', 'a6-108a'), 80.454545454545453), (('a6-009', 'a6-008'), 82.904761904761898), (('t9-146', 't9-149'), 82.125), (('t9-113', 't9-111'), 82.0), (('a6-107', 'a6-108a'), 81.80952380952381), (('a6-107', 'a6-008'), 82.700000000000003), (('a6-213', 'a6-212a'), 81.829268292682926), (('a6-213', 'a6-215'), 82.581395348837205), (('t9-009', 't9-111'), 80.200000000000003), (('t9-k61', 't9-k60a'), 80.722222222222229), (('t9-k61', 't9-k60b'), 82.38095238095238), (('a6-212a', 'a6-213'), 83.875), (('a6-212a', 'a6-215'), 82.195121951219505), (('a6-215', 'a6-213'), 82.232558139534888), (('a6-215', 'a6-212a'), 81.853658536585371), (('a6-108a', 'a6-009'), 80.795454545454547), (('a6-108a', 'a6-107'), 81.595238095238102), (('a6-108a', 'a6-008'), 81.428571428571431), (('a6-108a', 'a6-108b'), 80.659090909090907), (('a6-008', 'a6-107'), 80.536585365853654), (('a6-008', 'a6-108b'), 81.38095238095238), (('a6-108b', 'a6-008'), 80.666666666666671), (('a6-015', 'a6-017'), 80.631578947368425), (('a6-017', 'a6-015'), 80.65789473684211), (('a6-207', 'a6-205'), 82.357142857142861), (('a6-207', 'a6-208'), 84.261904761904759), (('a6-010', 'a6-011'), 82.595238095238102), (('a6-010', 'a3-106'), 80.047619047619051), (('a6-011', 'a6-010'), 82.428571428571431), (('a6-026a', 'a6-016'), 80.04651162790698), (('a6-026a', 'a6-026b'), 81.522727272727266), (('a6-026a', 'a6-028'), 80.523809523809518), (('a6-026a', 'a6-127'), 83.095238095238102), (('a6-026b', 'a6-016'), 80.11904761904762), (('a6-026b', 'a6-026a'), 85.285714285714292), (('a6-026b', 'a6-028'), 82.285714285714292), (('a6-026b', 'a6-127'), 84.285714285714292), (('a6-028', 'a6-026b'), 82.023809523809518), (('a6-127', 'a6-026b'), 80.5), (('a6-115', 'a6-016'), 80.238095238095241), (('a6-205', 'a6-207'), 80.534883720930239), (('a6-208', 'a6-207'), 80.75), (('a3-020a', 'a3-025'), 80.741935483870961), (('a3-023', 'a3-024'), 80.189189189189193), (('a3-106', 'a3-206'), 81.325581395348834), (('a3-206', 'a3-106'), 81.372093023255815), (('a3-206', 'a3-210'), 80.860465116279073), (('a3-210', 'a3-206'), 80.860465116279073), (('a3-024', 'a3-023'), 80.86486486486487)]
# prepare link information for plot
linklist = list()
sum = 0
for link, quality in links:
a = link[0]
b = link[1]
tmp = a + "--" + b
linklist.append(tmp)
sum += quality
avg_quality = sum / len(links)
# configure x axis
x = pylab.arange(0, len(links), 1)
xscal = list()
for i in range(1, len(links) + 1, 1):
xscal.append(i)
pylab.xlabel("Links")
# configure y axis
y = pylab.arange(1, 100 + 1, 5)
yscal = list()
for i in range(0, 100 + 1, 5):
yscal.append(i)
pylab.ylabel("Mittlere Qualitaet")
# plot
y_array = list()
for link, quality in links:
y_array.append(int(quality))
pyplot.scatter(x, pylab.array(y_array), s=10, marker = "o")
pylab.xticks(x, linklist, rotation=90)
pylab.yticks(yscal)
pylab.axhline(avg_quality)
pylab.show()
if __name__ == "__main__":
plot()