刚学习数据可视化,还有很多相应的包的使用不是很熟悉.希望大家一起学习,一起提高自己。
这里使用了 Pygal包 来进行可视化。还有一个很流行的工具是 matplotlib。Pygal包专注于生成适合在数字设备上显示的图表。可在用户与图表交互时突出元素以及调整其大小,还可以调整整个图表的尺寸,使图表适合在手机或者比较大的显示屏幕上显示。
在这里,将编写一个程序,它自动下载Github上星级(star)最高的Python项目的信息,并对这些信息进行可视化。
1. 获取星级最高的python项目信息
我们通过调用Github的API来请求获取需要的各种信息。这下面的URL就是API调用。(copy这条url到浏览器的地址栏中,并回车)
https://api.github.com/search/repositories?q=language:python&sort=stars
这个API分成4部分:
https://api.github.com/
将请求发送到Github网站中响应API调用的部分。search/repositories
让API 搜索Github上所有的仓库。?q=
中的?
号指出我们需要给这个API传入一个实参。q
表示查询,而=
让我们能够开始指定查询。language:python&sort=stars
这就是我们需要查询的内容了(language:python
)和指定我们按星级进行排序的条件了(&sort=stars
),这条件应该像数据库查询中的WHERE
吧。
这下面是是代码:
import requests
url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
# 执行API调用,并将响应的对象存储在变量r中
r = requests.get(url)
# requests对象含有属性状态码statues_code
# 如果API调用请求成功,状态码为200
print('request status code:' + str(r.status_code))
# 提取需要的数据
# 获取的数据为json格式,需要转化为字典形式数据
response_data = r.json()
print('total_count:'+str(response_data['total_count']))
response_datas = response_data['items']
# 将需要可视化的数据存储在names和stars列表中
names, stars = [],[]
for respo_data in response_datas:
names.append(respo_data['name'])
stars.append(respo_data['stargazers_count'])
2. 使用Pygal可视化
有了需要的数据后,我们就可以进行可视化了,呈现出Github上Python项目的受欢迎程度。这里,创建一个可交互的条形图:条形的高度表示项目获得了多少个star。
import requests
import pygal
-- 这里省略了第一步骤的代码 --
# 数据可视化
bar_chart = pygal.Bar(x_label_rotation=45) # x_label_rotation是让标签以45°斜角显示
bar_chart.title = 'Github上最多星的Python项目' # 直方图的标题
bar_chart.x_labels = names # 直方图x轴的各分组名字
bar_chart.add('', stars)
bar_chart.render_to_file('python_repo.svg')
在 bar_chart.add('', stars)
中,第一参数是需要我们添加的标签参数。这里我们不需要给这个数据系列添加标签,所以在添加数据时,将标签的设置成立空字符串。
在该python文件中,使用浏览器打开 python_repo.svg
文件,结果如下:
福利:XX-net 是一个特别好用的翻墙插件哦!!可以去github上看看,有教程。