X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=survey%2Fmakestats;h=5dc53ff45f74f3013217428382d17dad12ef31c8;hb=cc679feb7f960aaa3c1742fb4b09a895c1d627b8;hp=540e209e203ca7a1f205448362b7ddb4074e622a;hpb=5b16d07f96e5d5b11f36d7d5c87189fddda31888;p=neurodebian.git diff --git a/survey/makestats b/survey/makestats index 540e209..5dc53ff 100755 --- a/survey/makestats +++ b/survey/makestats @@ -18,6 +18,14 @@ import time # uniform colors for OS results os_colors = ['#B63537', '#4E4DA0', '#008200', 'gray'] os_order = ['linux', 'mac', 'win', 'otheros'] +time_order = ['notime', 'little', 'most', 'always'] +time_colors = ['#AA2029', '#D1942B', '#7FB142', '#69A7CE'] +time_categories = { + 'notime': "don't use it", + 'little': "less than 50%", + 'most': "more than 50%", + 'always': "always" + } # resources resource_categories = { 'vendor': 'Vendor/Project website', @@ -160,7 +168,7 @@ class DB(dict): def get_nice_name(self, id): srcs = [DB.os_dict, os_cat_names, DB.sw_dict, sw_categories, - resource_categories, DB.datamod_dict] + resource_categories, time_categories, DB.datamod_dict] for src in srcs: if id in src: return src[id] @@ -169,10 +177,9 @@ class DB(dict): def mkpic_os_per_env(db, destdir): - envs = ['pers_os', 'man_os', 'virt_host_os', 'virt_guest_os'] + envs = ['pers', 'man', 'virt', 'virt'] env_names = ['Personal', 'Managed', 'Virt. Host', 'Virt. Guest'] env_stats = {} - offset = 0 for env in envs: counts = db.get_counts(env) stats = dict(zip(os_family.keys(), [0] * len(os_family))) @@ -180,7 +187,10 @@ def mkpic_os_per_env(db, destdir): stats[os_family_rev[os]] += counts[os] total_count = np.sum(stats.values()) for osf in stats: - stats[osf] = float(stats[osf]) / total_count + if not total_count: + stats[osf] = 0 + else: + stats[osf] = float(stats[osf]) / total_count env_stats[env] = stats # make stacked barplot pl.figure(figsize=(6.4, 4.8)) @@ -199,6 +209,34 @@ def mkpic_os_per_env(db, destdir): pl.savefig('%s/ospref_by_env.png' % destdir, format='png', dpi=80) +def mkpic_time_per_env(db, destdir): + envs = ['pers_time', 'man_time', 'virt_time'] + env_names = ['Personal', 'Managed', 'Virtual'] + env_stats = {} + for env in envs: + counts = dict(zip(time_order, [0] * len(time_order))) + counts.update(db.get_counts(env)) + total_count = np.sum(counts.values()) + for c in counts: + counts[c] = float(counts[c]) / total_count + env_stats[env] = counts + # make stacked barplot + pl.figure(figsize=(7.5, 4)) + x = np.arange(len(envs)) + bottoms = np.zeros(len(envs)) + for i, t in enumerate(time_order): + stat = [env_stats[e][t] for e in envs] + pl.barh(x, stat, left=bottoms, color=time_colors[i], + label=db.get_nice_name(t), height=.6) + bottoms += stat + pl.legend(loc='center left') + pl.yticks(x + 0.2, env_names) + pl.ylim(-0.4, len(envs)) + pl.title("Research activity time by environment") + pl.xlabel("Fraction of submissions") + pl.savefig('%s/time_by_env.png' % destdir, format='png', dpi=80) + + def mkpic_submissions_per_key(db, destdir, key, title, sortby='name', multiple=False): counts = db.get_counts(key) @@ -291,7 +329,7 @@ def main(srcdir, destdir): db, destdir, 'bg_employer', title='Submissions per venue', sortby='count') for pic in [mkpic_os_per_env, mkpic_software, - mkpic_resources]: + mkpic_resources, mkpic_time_per_env]: pic(db, destdir) mkpic_rating_by_os(db, 'pers_os', ['pers_r%i' % i for i in range(1, 9)], destdir, "Ratings: Personal environment")