Python数据可视化day07|使用API

改进pygal图表

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

➜ python_repos_pygal.py
--snip--
# 可视化
my_style = LS('#333366', base_style=LCS)

my_config = pygal.Config()  #创建pygal类Config的实例
my_config.x_label_rotation = 45   #创建属性x_label_rotation
my_config.show_legend = False  #创建属性show_legend 
❶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-Starred Python Projects on GitHub' 
chart.x_labels = names

chart.add('', stars) 
chart.render_to_file('python_repos.svg')

在❶处,我们设置了图表标题、副标签和主标签的字体大小。在这个 图表中,副标签是 x 轴上的项目名以及 y 轴上的大部分数字。主标签是 y 轴上为5000整数倍的刻度;这些标签应更大,以与副标签区分开来。在❷处,我们使 用truncate_label将较长的项目名缩短为15个字符(如果你将鼠标指向屏幕上被截短的项目名,将显示完整的项目名)。接下来,我们将show_y_guides设置为False ,以隐藏图表中的水平线(见❸)。最后,在❹处设置了自定义宽度,让图表更充分地利用浏览器中的可用空间。
在❺处创建Bar 实例时,我们将my_config作为第一个实参,从而通过一个实参传递了所有的配置设置。我们可以通过my_config 做任意数量的样式和配置修改,而❺处的 代码行将保持不变。下图显示了重新设置样式后的图表。

修改后的图表

添加自定义提示工具

在Pygal中,将鼠标指向条形将显示它表示的信息,这通常称为工具提示 。在这个示例中,当前显示的是项目获得了多少个星。下面来创建一个自定义工具提示,以同时显示项目 的描述。

➜ bar_descriptions.py
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS

my_style = LS('#333366', base_style=LCS)
chart = pygal.Bar(style=my_style, x_label_rotation=45, show_legend=False)


chart.title = 'Python Projects' 
chart.x_labels = ['httpie', 'django', 'flask']

plot_dicts = [  #定义列表
❶   {'value': 16101, 'label': 'Description of httpie.'},  
    {'value': 15028, 'label': 'Description of django.'}, 
    {'value': 14798, 'label': 'Description of flask.'}, 
    ]

chart.add('', plot_dicts) 
chart.render_to_file('bar_descriptions.svg')

❶处的第一个字典将创建一个条形,用于表示一个获得了16 101 颗星、工具提示为Description of httpie的项目。
方法add() 接受一个字符串和一个列表。这里调用add() 时,我们传入了一个由表示条形的字典组成的列表(plot_dicts )。下图显示了一个工具提示:除默认 工具提示(获得的星数)外,Pygal还显示了我们传入的自定义提示。

显示工具提示图

根据数据绘图

为根据数据绘图,我们将自动生成plot_dicts ,其中包含API调用返回的30个项目的信息。

python_repos.py
# 探索有关仓库的信息
repo_dicts = response_dict['items']
print("Number of items:", len(repo_dicts))

names, plot_dicts = [], [] 
for repo_dict in repo_dicts:   
    names.append(repo_dict['name'])  
    if repo_dict['description']:   #判断参数是否为none
        plot_dict={'value':repo_dict['stargazers_count'],  
                   'label':repo_dict['description'],  
                   'xlink':repo_dict['html_url']  
                   }  
        plot_dicts.append(plot_dict)  
    else:  
        plot_dict={'value':repo_dict['stargazers_count'],  
                   'label':'ABC',  
                   'xlink':repo_dict['html_url']}  
        plot_dicts.append(plot_dict)  
# 可视化
my_style = LS('#333366', base_style=LCS)
--snip--
chart.add('', plot_dicts) 
chart.render_to_file('python_repos.svg')
鼠标指向条形将显示项目的描述并在图表中添加可单击的链接

你可能感兴趣的:(Python数据可视化day07|使用API)