数据获取
如果你留心看过 GitHub 的文档的话,你就会知道关于 GitHub 上的大部分数据,GitHub 官方都是提供了接口了的。比如我们今天要获取的数据就可以从下面这个接口拿到。
https://api.github.com/search/repositories?q=language:python+created:%3E2019-12-31&sort=stars&order=desc&per_page=10
如上所示,我们只获取语言为 Python 的开源项目,且创建时间晚于 2019-12-31,也就是 2020 年新创建的开源项目才做统计,接下来我们按照 stars 数倒序排序,取前十条记录就拿到我们需要的数据啦。
由于该接口返回的开源项目信息过于庞大,我们只取项目名称,URL,fork 数,star 数以及 watch 数。
# 获取数据 def get_data(): base_url = 'https://api.github.com/search/repositories?q=language:python+created:%3E2019-12-31&sort=stars&order=desc&per_page=10' response = requests.get(base_url) result = response.json() data = {} for item in result['items']: data[item['name']] = [item['html_url'], item['stargazers_count'], item['watchers_count'], item['forks']] return data
可视化
# 可视化 def show_img(): data = get_data() names = list(data.keys()) values = [data[name][1] for name in names] bar = ( Bar() .add_xaxis(names[::-1]) .add_yaxis("星标数", values[::-1]) .reversal_axis() .set_series_opts(label_opts=opts.LabelOpts(position="right")) .set_global_opts( yaxis_opts=opts.AxisOpts(name_rotate=0, name="项目", axislabel_opts={'interval': -10, "rotate": 0}), title_opts=opts.TitleOpts(title="2020 GitHub Python TOP 10")) ) bar.render_notebook()
将获取到的数据,按照 star 数从大到小生成柱状图,如下所示:
00 Depix
伴随着移动互联网的普及,我们的生活越来越便利,衣食住行一个手机全搞定,可手机在给我们带来便利的同时,也在威胁着我们的个人隐私安全。比如很多 App 动不动就要你实名认证,甚至人脸识别等。
以至于现在的我们都变得格外的小心翼翼,有时候发个朋友圈都要打马赛克,生怕泄漏一点点隐私。
可如果现在我告诉你,「打马赛克」已经不在安全了,你想要隐藏的信息,已犹如裸奔你会作何感想。
最近 GitHub 上出现了一个火的一塌糊涂的项目,它就是号称能抹去马赛克让原图重现的神器 Depix。截至目前,该项目的星标数已经超过 14K。
上面是一个官方给出的示例图,我们可以看出使用 Depix 恢复后,基本上已经可以看清大部分内容了,太恐怖了。
01 diagrams
作为程序员的我们可能平时画图比较少,顶多也就是写写文档。但画图可是架构师必备技能之一,熟话说不想当架构师的程序员不是合格的程序员,画图我们还是有必要学习一下的。
说到画图,你肯定想到的是各种在线离线工具等,你有试过用代码来画图吗?
没错,你没有听错,用代码来画图完全可行。利用 diagrams 库,我们就可以通过以代码的方式来绘制诸如阿里云、AWS、K8S 等系统架构图。
真正做到了图表即代码,代码即图表。