python条形图数据标签_【数据分析入门】初识Web API(三)

因为各种琐事和情绪耽搁了几天,今天继续将之前整理好的api数据进行可视化。

522fc8a243c6df22a6f34bbbda8e5a9c.gif522fc8a243c6df22a6f34bbbda8e5a9c.gif66ec56816d8270e875ccde1ba3c0f676.gif

使用Pygal可视化仓库

有了一些有趣的数据后,我们来进行可视化,呈现GitHub上Python项目的受欢迎程度。我们将创建一个交互式条形图:条形的高度表示项目获得了多少颗星,单击条形将进入项目在GitHub的主页。下面是首次尝试这样做:

import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS,LightenStyle as LS#执行API调用并存储响应url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'r = requests.get(url)print("Status code:",r.status_code)#将API响应存储在一个变量中response_dict = r.json()print("Total repositories:",response_dict['total_count'])#探索有关仓库的信息repo_dicts = response_dict['items']names,stars = [],[]for repo_dict in repo_dicts:names.append(repo_dict['name'])stars.append(repo_dict['stargazers_count'])#可视化my_style = LS('#333366',base_style=LCS)chart = pygal.Bar(style=my_style, x_label_rotation=45, show_legend=False)chart.title = 'Most-Starred Python Projects on GitHub'chart.x_labels = nameschart.add('',stars)chart.render_to_file('python_repos.svg')

首先我们导入了pygal以及要应用于图表的pygal样式。接下来,打印API调用响应的状态以及找到的仓库总数,以便获悉API调用是否出现了问题。我们不再打印返回的有关项目的信息,因为通过可视化可以呈现。

我们创建了两个空列表,用于存储包含在图表中的信息。我们需要每个项目的名称,用于给条形打上标签,我们还需要知道项目获得了多少个星,用于确定条形的高度。在循环中,我们将项目的名称和获得的星数附加到这些列表的末尾。

接下来,我们使用LightenStyle类定义了一种样式,并将其基色设置为深蓝色。我们还传递了实参base_style,以使用LCS类,这里做了别名。然后,我们使用Bar()创建一个简单的条形图,并向它传递了my_style。我们还传递了另外两个样式实参,让标签绕x轴旋转45度,并隐藏了图例,因为我们只在图表中绘制一个数据系列。接下来我们给图表指定了标题。并将属性x_labels设置为列表names。运行一下~

29b53ef5bbc17c5d1259cd54779b2ad0.png

522fc8a243c6df22a6f34bbbda8e5a9c.gif522fc8a243c6df22a6f34bbbda8e5a9c.gif66ec56816d8270e875ccde1ba3c0f676.gif

改进Pygal图表

下面来改进这个图表的样式。我们将进行多个方面的定制,因此先来稍微调整代码的结构,创建一个配置对象,在其中包含要传递给Bar()的所有定制:

import requestsimport pygalfrom pygal.style import LightColorizedStyle as LCS,LightenStyle as LS#执行API调用并存储响应url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'r = requests.get(url)print("Status code:",r.status_code)#将API响应存储在一个变量中response_dict = r.json()print("Total repositories:",response_dict['total_count'])#探索有关仓库的信息repo_dicts = response_dict['items']names,stars = [],[]for repo_dict in repo_dicts:names.append(repo_dict['name'])stars.append(repo_dict['stargazers_count'])#可视化my_style = LS('#333366',base_style=LCS)my_config = pygal.Config()my_config.x_label_rotation = 45my_config.show_legend = Falsemy_config.title_font_size = 24my_config.label_font_size = 14my_config.major_label_font_size = 18my_config.truncate_label = 15my_config.show_y_guides = Falsemy_config.width = 1000chart = pygal.Bar(my_config,style=my_style)chart.title = 'Most-Starred Python Projects on GitHub'chart.x_labels = nameschart.add('',stars)chart.render_to_file('python_repos.svg')

在样式开始,我们创建了一个Pygal类Config实例,并将其命名为my_config。通过修改my_config的属性,可定制图表的外观。接着我们设置了两个属性,x_label_rotation和show_legend,同时还设置了图表标题、副标签和主标签的字体大小。在这个图表中,副标签是x轴上的项目名以及y轴上的大部分数字。主标签是y轴上为5000整数倍的刻度:这些标签应更大,以与副标签区分开来。使用truncate_label将较长的项目名缩短为15个字符,将show_y_guides设置为false,以隐藏图表中的水平线。最后设置了自定义宽度,让图表更充分地利用浏览器中的可用空间。

38bc3ac0d08285f41d49c139333a9eb8.png

9cb73f579af98470044dff5c47d4859b.png 308cb09b9e702fda0b2a413d32c4251b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值