如何在Python中生成图形和图表

举报
xenia 发表于 2019/09/03 07:16:51 2019/09/03
【摘要】 在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据。Python中常用的一些可视化数据包括以下几种。Matplotlib。Seaborn。ggplot。Geoplotlib。Bokeh。Plotly。在本章中将使用Matplotlib可视化数据包。此外,还将学习其他有用库的编码。1 折线图折线图(Line Chart)是将一系列数据点通过直线连...

在本章中,我们将学习如何在Python中生成图形和图表,同时将使用函数和面向对象的方法来可视化数据。

Python中常用的一些可视化数据包括以下几种。

  • Matplotlib。

  • Seaborn。

  • ggplot。

  • Geoplotlib。

  • Bokeh。

  • Plotly。

在本章中将使用Matplotlib可视化数据包。此外,还将学习其他有用库的编码。

1 折线图

折线图(Line Chart)是将一系列数据点通过直线连接起来的图表,它提供了一个参数对另一个参数的简单行为,常用于显示随着时间推移的趋势。可以使用折线图来比较相关的特征。

在Jupyter Notebook中生成第一张图表。

首先导入所需要的库。

Q.png

默认情况下, Matplotlib打开新的窗口以显示结果。如果想在当前Notebook页面看到结果,可以使用如下所示的命令。

w.png

其次需要设置两个轴的数据。在x

轴上获取1~15的数据, y

轴选取平均值为50且标准差为10的随机数据。

e.png

现在,只需运行下方的绘图命令,折线图就会出现,结果如图1所示。

r.png

1902eca3fc1e582a0891-Original-image1.jpeg

图1

也可以使用下面的代码改变线条的颜色,结果如图2所示。

t.png


1902f30d97d18503b769-Original-image2.jpeg

图2

通过ls和lw变量可以改变线的类型及其宽度,结果如图3所示。

y.png


1902f299b6b6b50924c3-Original-image3.jpeg

图3

通过下面的命令可以在每个数据点上添加标记,结果如图4所示。

u.png

1902e5ec11b0a5368ee9-Original-image4.jpeg

图4

也可以绘制Pandas DataFrame中的折线图。

i.png

为了绘制折线图,可以使用以下命令。 xticks和yticks用于设置数轴上的有效范围,结果如图5所示。

o.png


190299ece367f4bf39f6-Original-image5.jpeg

图5

为不同的线条定义颜色,结果如图6所示。

p.png

1902fa9e0ce7c3c1a766-Original-image6.jpeg

图6

2 条形图

条形图(Bar Chart)常用于分析分组数据,它一般与分类数据一起使用,用来可视化其他变量对每一类别的影响。条形图为每个类别创建一个矩形。例如,有3个类别的城市,我们希望了解这些城市中的车辆数量。通过使用条形图,可以生成3个矩形(每个矩形代表一个城市),同时高度表示车辆数量。条形图显示了在每个类别的观察次数。

使用下面的代码绘制条形图,结果如图7所示。

a.png


1902683949f1731384e8-Original-image7.jpeg

图7

也可以从Pandas中生成条形图。默认情况下, plot函数生成折线图。可以指示函数生成条形图,结果如图8所示。

s.png


190231bcac917a164219-Original-image8.jpeg

图8

3 饼图

饼图(Pie Chart)将整个数据表示为一个圆。根据不同类别的比例沿圆圈制作切片。例如,对3个城市的车辆进行分析,饼图中展示了一个城市相比于其他城市的车辆比例。如果想在一个统一的规模下比较每个类别,饼图是非常合适的。

通过使用以下命令生成饼图,结果如图9所示。

d.png


1902f8c3b43c362f29ec-Original-image9.jpeg

图9

定义每个切片的颜色,结果如图10所示。

f.png


19023d5dd5301c84ddc5-Original-image10.jpeg

图10

4 直方图

直方图(Histograms)是统计学中广泛应用的图形之一,它能使我们确定连续数据的形状。通过直方图可以检测数据的分布、数据中的离群值和其他有用的属性。

要通过连续数据构造直方图,首先需要创建箱子(bin)并将数据放入适当的箱子中。这不同于与分类变量一起使用的条形图。

例如,有以下数据。

Data = [23, 12, 34, 56, 43, 26, 13, 39, 58, 32, 44 ]

可以按照表1这样定义箱子。

表1

箱子(bin)数据点数据点数
>2012、132
20~4023、34、26、39、325
40~6056、43、58、444

使用matplotlib创建直方图。

g.png

这将产生以下直方图,结果如图11所示。


190265e6f6dda0f58e27-Original-image11.jpeg

图11

5 散点图

散点图(Scatter Plot)能够表示两组数据点之间的关系。例如,任何人的体重和身高、交通强度和汽车数量、发表的论文数和多年的论文查看量等均可以通过散点图来呈现。

使用下面的代码生成散点图,结果如图12所示。

h.png


19021c3d5f51d087f838-Original-image12.jpeg

图12

6 箱线图

箱线图(Box Plot)可以用来理解变量的扩展传播。在箱线图中,矩形顶部边界代表上四分位数(third quantile),底部边界代表下四分位数(first quantile),而盒子中的直线表示中位数(median)。

顶部的垂直线表示最大值,底部的垂直线表示最小值。

通过下面的代码生成方框图,结果如图13所示。

j.png


190238a79c6b8c72f5e2-Original-image13.jpeg

图13

7 采用面向对象的方式绘图

除了使用函数生成图形之外,还可以使用面向对象的方法来生成这种图形。我们定义一个图形对象并不断地添加图元素来丰富它。

首先,创建一个空白图形对象并向其添加轴。然后,在对象内生成绘图并为其指定参数,结果如图14所示。

下面是该方法的代码。

k.png


19026ad48ccd97ee3816-Original-image14.jpeg

图14

在上面的代码中进行了如下的操作。

(1)使用plt.figure()创建了图形对象。

(2)使用add_axes定义数轴。

(3)使用grid()启用网格。

(4)定义了数轴标签。

(5)定义数轴上的值axes (xticks, yticks)。

(6)添加了数轴的下限和上限。

(7)使用plot生成绘图。

也可以创建子图,通过子图对其进行比较。

l.png

生成图15所示的图形。


1902b87fce6b92d49ff2-Original-image15.jpeg

图15

8 Seaborn

Seaborn是基于Matplotlib的Python程序包,它提供了一些高层次的统计图形方法。下面会介绍到一些Seaborn中常用的绘图。

首先导入Seaborn。

z.png

然后创建一些随机数据。

x.png

8.1 分布图

分布图(Distplot)对于探索单变量分布是相当有用的。可以建立一个直方图并对其进行核密度估计。核密度估计是一种获得随机变量概率函数的非参数方法。核密度估计与直方图相比,平滑且没有任何端点,结果如图16所示。

c.png


190270c051232a106128-Original-image16.jpeg

图16

8.2 双变量分布

双变量分布(Jointplot)对双变量分析是很有用的。它与Matplotlib中的散点图相似,结果如图17所示。

v.png


190261b7c79881500b17-Original-image17.jpeg

图17

8.3 二元分布的核密度估计

可以在jointplot()中提供一个参数kind ="kde"来执行内核密度估计,结果如图18所示。

b.png

19024938d43a4189e5d1-Original-image18.jpeg

图18

8.4 成对双变量分布

成对双变量分布的结果如图19所示。

n.png


19020934df31d954b3e1-Original-image19.jpeg

图19

8.5 分类散点图

分类散点图(Categorical Scatterplot)是分析分类变量的方法,结果如图20所示。

m.png

1902fbc28af3b97a4174-Original-image20.jpeg

图20

8.6 小提琴图

散点图给出的基础分布与分类变量的信息很少,因此可以使用小提琴图(Violinplots)来分析数据。图21所示为用核密度估计的箱线图。

qq.png

190291d56dec6efe83b3-Original-image21.jpeg

图21

8.7 点图

点图(Point Plot)可用来显示沿轴高度,连接它们的是类变量,结果如图22所示。

ww.png


19024f17f1b7a0a6eabf-Original-image22.jpeg

图22

本文摘自由人民邮电出版社异步社区出版的《Python机器学习》 作者:[印]阿布舍克·维贾亚瓦吉亚(Abhishek Vijayvargia)译者:宋格格


752eee2d0343425b9b63f4e6f2aeba2e.png

《Python机器学习》通过解释数学原理和展示编程示例对机器学习进行了系统、全面的解析。《Python机器学习》共分为12章,内容涵盖了机器学习以及Python语言的基础知识、特征工程的概念与操作技术、数据可视化技术的实现、监督学习及无监督学习算法、文本分析、神经网络和深度学习、推荐系统的构建方法以及预测处理时间序列的方法等。阅读《Python机器学习》能够加深读者对机器学习的认识和理解,从而达到理论与实践相结合、学以致用的目的。 《Python机器学习》适合Python程序员、数据分析人员、对机器学习感兴趣的读者以及机器学习领域的从业人员阅读。


本文转载自异步社区

原文链接:https://www.epubit.com/articleDetails?id=N270db0ed-3a27-4ab1-9d57-85e37bba497c

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。