「 Python数据可视化系列」3. 使用Leather进行数据可视化

来源 | 「Practical Python Data Visualization  A Fast Track Approach To Learning Data Visualization With Python」

作者 | Ashwin Pajankar

译者 | Liangchu

校对 | gongyouliu

编辑 | auroral-L

全文共3300字,预计阅读时间20分钟。

第三章 使用Leather进行数据可视化
             在Jupyter Notebook上运行OS指令

             Leather简介

             可视化的更多类型

             标尺Scales

             风格Styling

             总结


第三章 使用Leather进行数据可视化

在第二章中,我们熟悉了使用Jupyter Notebook进行Python编程的步骤,所以现在你可以放心地使用Jupyter Notebook编写交互式Python程序了。

在本章中,我们将使用Jupyter Notebook、Python、数据可视化库leather进行基本的数据可视化。以下是我们将在本章中介绍的内容:

• leather的简介

• 更多类型的可视化

• 标尺

• 风格

在Jupter Notebook上运行OS(operating system命令

你已经知道如何使用Jupyter Notebook进行Python编程,现在我们将学习如何在笔记本notebook中执行OS命令,这对于我们使用pip安装许多实用程序是很有用的,而且我们可以在笔记本中直接运行它,所以很方便。

为本章中即将涉及的所有代码创建一个新的Jupyter笔记本。本书每一章的学习中,我们都会这么做,所以到本书的最后,我们将拥有按章节分类的所有代码,并存放在笔记本中。

要在笔记本单元格中执行OS命令,就要使用!作为前缀,示例命令如下:

!dir

该命令的输出如图(3-1)所示:

 

可以通过运行以下语句更新pip:

!pip3 install--upgrade pip

运行以下语句安装用于数据可视化演示的库:

!pip3 install leather

这将在计算机上安装leather数据可视化库。在下一节中,我们将使用笔记本开始学习Python利用leather库的可视化。

Leather简介

Leather是一个易于使用且流行的Python数据可视化库。你可以在Python Package Index(PyPI,Python软件包索引)所在的网站https://pypi.org/project/leather/上找到该软件包。PyPI是第三方软件包的存储库,我们可以使用pip3实用程序下载它。我们还可以在PyPI上搜索包的可用性。在笔记本中运行以下命令:

!pip3 search leather

输出如图(3-2)所示:

 

在继续学习这个包之前,我们需要提前了解一些关于Python编程语言的知识。在Python中,制表符(tab)或缩进(index)用于指示代码块。在一些流行的编程语言比如C、C++和java中,多行代码块被封闭在括号{}中。然而Python强制程序员使用缩进表示代码块,除此之外别无其他办法。以下面的代码为例:

a = 3 

if a%2 == 0:

    print('Even') 

else:

    print('Odd')

在笔记本上运行代码即可看到结果了。还有一件事你也可以试试:我们先前学习过PEP 20,即Python之禅。Python创始人将其作为彩蛋添加到解释器中,你可以运行以下语句调用它:

import this

若你在笔记本中运行该语句,它会在输出中打印Python之禅的所有内容。

注意,无论我们要用Jupyter Notebook演示什么程序,都可以做一些修改然后在IDLE中运行。我们使用Jupyter笔记本是因为它在即时反馈和交互上的优势。现在让我们使用import语句将leather库添加到笔记本中。每个会话中只需导入一次就可以在整个会话中使用了。输入以下语句:

import leather

运行此命令,它会将库导入当前笔记本的会话中。使用标题(heading)区分每个topic的内容不失为一个好主意,不过用不用都取决于你自己。你会发现,我经常在本书的笔记本中使用标题来提供上下文和参考,以说明我正在演示的内容。这是个好习惯,可能你会想使用这种方法。

让我们编写一些简单的代码来可视化几个点。我们可以在X-Y坐标系中定义点。我们可以使用元组(tuple)列表(list)来定义点,如下所示:

data1 = [(1.5, 2), (2, 3), (4.5, 6), (7.5, 4)]

我们也可以将它们定义为一列列表(a list of lists):

data1 = [[1.5, 2], [2, 3], [4.5, 6], [7.5, 4]]

我们也可以将它们定义为元组的元组(a tuple of tuples):

data1 = ((1.5, 2), (2, 3), (4.5, 6), (7.5, 4))

我们还可以将它们定义为列表的元组( a tuple of lists):

data1 = ([1.5, 2], [2, 3], [4.5, 6], [7.5, 4])

如你所见,leather库并不是很特别,而且可以很灵活地定义数据。

下面定义一个图表(chart)对象:

chart = leather.Chart('Simple pairs of x-y')

接下来,创建一个点图(dot chart):

chart.add_dots(data1)

然后使用如下代码将图表可视化:

chart.to_svg()

它将在这个笔记本上显示输出,如图(3-3)所示:

 

我们可以使用以下语句将图像保存到磁盘:

chart.to_svg('image1.svg')

我们可以按如下方式自定义点:

chart = leather.Chart('Customised Dots')chart.add_dots(data1, fill_color='#00ff00', radius=10)chart.to_svg()

接着让我们定义更多的数据点:

data2 = [(2, 3), (4, 5), (5, 6), (7, 5)]

我们还可以将多个系列(这里的系列指的是不同风格的点,即data1和data2)的点可视化如下:

chart=leather.Chart('Visualizing Multiple series') 

chart.add_dots(data1) 

chart.add_dots(data2) 

chart.to_svg()

输出如图(3-4)所示:

 

如上图(3-4)所示,leather根据所属系列自动为点分配不同的颜色。

可视化的更多类型

我们可以通过将点连接起来以线段形式将数据可视化,如下所示:

chart=leather.Chart('Visualizing Lines') 

chart.add_line(data1) 

chart.to_svg()

输出如图(3-5)所示:

 

我们可以按如下方式自定义线条可视化:

chart=leather.Chart('Customized Line') 

chart.add_line(data1,stroke_color='#0000ff', width=3) 

chart.to_svg()

如图(3-6)显示输出:

 

我们可以将多条线段可视化如下:

chart=leather.Chart('Visualizing Multiple Lines')

chart.add_line(data1)

chart.add_line(data2)

chart.to_svg()

如图(3-7)显示输出:

 

我们可以在单个可视化中可视化多个类型的图,如下所示:

chart=leather.Chart('Visualizing Multiple Types')

chart.add_line(data1)

chart.add_dots(data2)

chart.to_svg()

如图(3-8)显示输出:

 

我们可以用条形图可视化:

data = [[1, 'A'], [2, 'B'], [3, 'C'], [4, 'D']]

chart=leather.Chart('Visualizing Bars')

chart.add_bars(data)

chart.to_svg()

在我们的数据集中,其中一个维度是文本数据。可视化如图(3-9)所示:

 

我们可以自定义如下:

chart=leather.Chart('Customizing Bars')

chart.add_bars(data, fill_color='#777777')

chart.to_svg()

输出如图(3-10)所示:

 

我们可以使用水平列(柱状图)进行可视化,如下所示:

data = [ ('A', 1), ('B', 2), ('C', 3), ('D', 4)] 

chart = leather.Chart('Visualizing Columns') 

chart.add_columns(data) 

chart.to_svg()

输出如图(3-11)所示:

 

我们可以按以下方式自定义列:

chart = leather.Chart('Customizing Columns')

chart.add_columns(data, fill_color='#77ff77')

chart.to_svg()

输出如图(3-12)所示:

 


标尺Scales

leather库可以自动程序化地创建各种类型的Scale,能自动为文本数据创建顺序标尺。这个例子和我们前面看到的一样:

chart = leather.Chart('The Ordinal Scale') 

chart.add_columns(data) 

chart.to_svg()

当数据为数字时,将自动创建线性标尺。我们可以按以下方式设置其边界:

chart = leather.Chart('Linear Scale')

chart.add_x_scale(1, 8)

chart.add_y_scale(1, 7)

chart.add_line(data1)chart.to_svg()

输出如图(3-13)所示:

 

将自动为时间(时间相关的)数据创建时间标尺:

from datetime import date

data = [

    (date(2020, 1, 1), 4),

    (date(2020, 3, 1), 6),

    (date(2020, 6, 1), 2),

    (date(2020, 9, 1), 1)]

chart = leather.Chart('Temporal Scale')

chart.add_x_scale(date(2019, 9, 1), date(2020, 12, 1))

chart.add_line(data)

chart.to_svg()

输出如图(3-14)所示:

 

 

风格Styling

leather提供了很多种风格可供选择。我们可以按需求设置轴上的刻度值,如下所示:

chart = leather.Chart('Ticks Demo') 

chart.add_x_scale(1, 8) 

chart.add_x_axis(ticks=[1, 2, 3, 4, 5, 6, 7, 8])

chart.add_y_scale(1, 7) 

chart.add_y_axis(ticks=[1, 2, 3, 4, 5, 6, 7]) 

chart.add_line(data1) 

chart.to_svg()

输出如图(3-15)所示:

 

我们还可以自定义字体和颜色,用于显示可视化中的值和序列。下面是一个简单的例子:

leather.theme.title_font_family = 'Times New Roman' 

leather.theme.legend_font_family = 'Times New Roman' 

leather.theme.tick_font_family = 'Times New Roman' 

leather.theme.default_series_colors = ['#ff0000', '#00ff00'] 

chart = leather.Chart('Custom Fonts') 

chart.add_line(data1) 

chart.add_line(data2) 

chart.to_svg()

如图(3-16)显示了这个例子的输出:

 

我们也可以根据数据点的位置给它们上色,下面的代码演示了这一点。首先将random库导入文件中:

import random

我们将用它生成如下数据点:

data = [(random.randint(0, 250),

         random.randint(0, 250)) for i in range(100)]

将创建100个数据点。这100个点的x和y轴的值在0到250里随机选择。我们可以编写一个函数colorizer,根据点的位置以RGB的形式返回颜色值:

def colorizer(location):

    return 'rgb(%i, %i, %i)' % (location.x, location.y, 150)

调用此函数来定义点的颜色,如下所示:

chart = leather.Chart('Colorized dots')

chart.add_dots(data, fill_color=colorizer)

chart.to_svg()

输出如图(3-17)所示:

 

总结

本章介绍了在Python中使用流行的数据可视化库leather进行数据可视化的演示。我们看到了不同类型的可视化、风格和标尺。Leather是一个非常简单的数据可视化库,所以只能可视化简单的形状。

你的业务需求或科学可视化可能需要更复杂、更精细的可视化。为此,你需要熟悉科学的Python生态系统。下一章将详细探讨科学Python生态系统。我们还将学习Numpy n维数组(也称为ndarrays)的基础知识。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据与智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值