练习题17-1,17-2,17章总结--10.8学习日记

大家好!这里是记录一个非专业的小白学习python的路径,完全是零基础自学。由于作者刚刚大学毕业所学专业找到的工作不太喜欢,工作空闲时间长,在职学习python语言,想借助这个平台记录一下自己学习的路径,文章有什么错误也希望大佬们积极指出,万分感谢!希望同大家一起学习,一起进步,谢谢。内容基于书籍python编程:从入门到实践    作者:Eric Matthes [美]


一、复习昨日之学习

昨天主要学习使用pygal 将从网站上获取的文件数据进行可视化,昨天的内容主要还是pygal图表的设置的一些内容,比如图表的标题,字体字号,标签隐藏无用的横线,设置图表的尺寸,添加链接等等,想要详细了解这些内容的铁子们可以关注作者并翻阅作者前面所写的学习日记进行共同学习研究。

效果图:

练习题17-1,17-2,17章总结--10.8学习日记

 昨日知识点练习:

17-1 其他语言:修改 python_repos.py 中的 API 调用,使其在生成的图表中显示使 用其他语言编写的最受欢迎的项目。请尝试语言 JavaScript、Ruby、C、Java、Perl、Haskell 和 Go 等。

将昨天的源代码中的python更改为所需要尝试的语言即可比如c语言

url = 'https://api.github.com/search/repositories?q=language:c&stats'

 将图表标题更改为所需要的语言,昨天的源代码可以关注作者翻阅昨天学习日记获得

练习题17-1,17-2,17章总结--10.8学习日记

 


二、web API 章复习

 本章主要学习了使用web API 从网络上获取数据并将所需要的数据进行明确定义,方便pygal可视化的数据使用。了解了什么是URL,以及URL的作用是什么?,安装了requests用来作为获取数据的介质,pygal绘制图表的一些设置等等。

章总结复习题:

17-2 最活跃的讨论:使用 hn_submissions.py中的数据,创建一个条形图,显示 Hacker News 上当前最活跃的讨论。条形的高度应对应于文章得到的评论数量,条形的标签应 包含文章的标题,而每个条形应是到该文章讨论页面的链接。

源代码:

#coding=gbk

#hn_submissions.py


import requests
from operator import itemgetter

import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS


#执行API调用并存储响应

#获取统一资源定位符

url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
r = requests.get(url)

print("Status code:",r.status_code)#验证响应

#处理有关每篇文章的信息
#将API响应存储在一个变量中
submission_ids = r.json()#使用json格式将数据转换为格式是json的字典
submission_dicts = []
for submission_id in submission_ids[:30]:
	#对于每篇文章,都执行一个API调用
	url = ('https://hacker-news.firebaseio.com/v0/item/'+
			str(submission_id)+'.json')
			
	submission_r = requests.get(url)
	print(submission_r.status_code)
	response_dict = submission_r.json()
	
	
	submission_dict = {
				'title':response_dict['title'],
				'link':'http://news.ycombinator.com/item?id='+str(submission_id),
				'comments':response_dict.get('descendants',0)
				
				}
	submission_dicts.append(submission_dict)
	
submission_dicts = sorted(submission_dicts,key=itemgetter('comments'),reverse=True)


for submission_dict in submission_dicts:
	print('\nTitle:',submission_dict['title'])
	print('DIscussion link:',submission_dict['link'])
	print('Comments:',submission_dict['comments'])
	





#探索有关仓库的信息

titles, plot_dicts = [],[]
for submission_dict in submission_dicts:
	titles.append(submission_dict['title'])
	
	#向plot_dicts中传递字典列表来方便给图表交互时显示项目描述和星数
	plot_dict = {
		'value':submission_dict ['comments'],
		'label':submission_dict['title'],
		'xlink':repo_dict['link'],#在图表中添加可单击的链接
		}
	plot_dicts.append(plot_dict)
	
#可视化
my_style = LS('#333366',base_style=LCS) #将基色设置为深蓝色

my_config = pygal.Config()#创建实例
my_config.x_label_rotation=45#将x轴标签旋转45度防止重叠
my_config.show_legend = False#隐藏图例
my_config.title_font_size = 24#设置标题,标签字体大小
my_config.label_font_size = 14
my_config.major_label_font_size = 18
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-comment python Projects on Hacker News'
chart.x_labels = titles

chart.add("",plot_dicts)
chart.render_to_file('python_submissions.svg')

上一篇:NOIP 前做题


下一篇:2021年8月2日 模拟赛