使用API,并使用Pygal可视化仓库
简介
Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API
调用。请求的数据将以易于处理的格式(如JASON
或CSV
)返回。
使用Pygal
可视化仓库,呈现GitHub
上Python
项目的受欢迎程度。将创建一个交互式条形图:条形的高度表示项目获取了多少颗星。单击条形将进入项目在GitHub
上的主页。
实际代码如下:
import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
# 执行API调用并存储响应
url = 'http://api.github.com/search/repositories?q=language:python&sort=stars'
r = requests.get(url)
# 响应对象包含一个名为status_code的属性,它让我们知道请求是否成功了(状态200表示请求成功)
print("Status code", r.status_code)
# 将API响应存储在一个变量中(这个API返回JSON格式的信息,因此我们使用方法json()将这些信息转化为一个Python字典)
response_dict = r.json()
print("Total repositories:", response_dict['total_count'])
# 研究有关仓库的信息
repo_dicts = response_dict['items']
print("Repositories returned:", len(repo_dicts))
names,plot_dicts=[],[]
for repo_dict in repo_dicts:
names.append(repo_dict['name'])
#我们定义了一个名为plot_dict的列表,每个字典都包含两个键:‘value’和‘label’。
#Pygal根据与键‘value’相关联的数字来确定条形的高度
#使用与‘label’相关联的字符串给条形创建工具提示
#pygal根据与键‘xlink’相关联的URL将每个条形都转化为活跃的链接。单击图表中的任何条形时,都将在浏览器中打开一个新的标签页,并在其中显示相应项目的GitHub页面
plot_dict={
#表示获取多少颗星星
'value':repo_dict['stargazers_count'],
#表示对项目的描述
'label':repo_dict['description'],
'xlink':repo_dict['html_url']
}
plot_dicts.append(plot_dict)
#可视化
my_style = LS('#333366', base_style=LCS)
my_config=pygal.Config()
#让标签绕x轴旋转45度(x_label_rotation=45)
my_config.x_label_rotation=45
#隐藏了图例(show_legend=False)
my_config.show_legend=False
#设置图表标题的字体大小
my_config.title_font_size=24
#设置副标签的字体大小(副标签是x轴上的项目名及y轴上的大部分数字)
my_config.label_font_size=14
#设置主标签的字体大小(主标签是y轴上为5000整数倍的刻度)
my_config.major_label_font_size=18
#使用truncate_label将较长的项目缩短为15个字符(如果你讲鼠标指向屏幕上被截断的项目名,将显示完整的项目名)
my_config.truncate_label=15
#隐藏图表的水平线
my_config.show_y_guides=False
#自定义图表宽度
my_config.width=1000
chart = pygal.Bar(my_config,style=my_style)
chart.title = 'Most-Starred Python Projects on GitHub'
chart.x_labels = names
chart.add('', plot_dicts)
chart.render_to_file('python_repos.svg')
运行并查看结果