目录

    • 什么是数据可视化
  • 常见图表类型

  • 认识Matplotlib

  • Matplotlib简答使用

      • 使用默认画布
  • 通过figure()函数创建画布

  • 通过subplot()函数创建单个子图

  • 通过subplots() 函数创建多个子图

  • 添加各类标签

  • 绘制常见图表

      • 绘制直方图
  • 绘制柱形图

  • 绘制散点图

  • 绘制折线图

  • 绘制饼状图

  • 保存图表

  • 综合案例

  • 总结

上一期我带着大家一起学习了数据分析,分析后的数据已经没有了异常值和空值,这样一来我们就可以使用我们已经处理完成的数据了。本期我们就来试试对我们爬取的数据进行可视化分析吧~

什么是数据可视化


数据可视化是指将数据以图表的形式表示,并利用数据分析和开发工具发现其中未知信息的过程。Python为我们提供了很多数据可视化工具,例如:Matplotlib、Seaborn等,这里我们针对Matplotlib进行演示。

常见图表类型


在数据分析过程中我们常见的图表类型包括以下几种:

  • 直方图:适用于比较数据之间的多少

  • 折线图:反映一组数据的变化趋势

  • 条形图:显示各项目之间的比较情况,和直方图类似

  • 散点图:显示若干数据系列中各数值之间的关系,类似于X、Y轴,判断两变量之间是否存在某种联系

  • 箱形图:识别异常值

认识Matplotlib


Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。

Matplotlib简答使用


使用默认画布

import numpy as np

import matplotlib.pyplot as plt

使用默认画布绘图

data = np.arange(100, 200)

plt.plot(data)

plt.show()

请添加图片描述

通过figure()函数创建画布

import matplotlib.pyplot as plt

#创建图形对象

fig = plt.figure()

figsize 指定画布的大小,(宽度,高度),单位为英寸。

dpi 指定绘图对象的分辨率,即每英寸多少个像素,默认值为80。

facecolor 背景颜色。

dgecolor 边框颜色。

frameon 是否显示边框。

import matplotlib.pyplot as plt

import numpy as np

创建图形对象

plt.figure(facecolor=‘gray’)

data = np.arange(100, 200)

plt.plot(data)

plt.show()

请添加图片描述

通过subplot()函数创建单个子图

有些时候我们想在同一个画布绘制多个视图,而不是在多个画布中绘制多个图形。这时候可以把画布进行划分,每个绘图区域都是一个Axes对象,他拥有属于自己的坐标系统,被称为子图。

plt.subplot(nrows, ncols, index)

nrows 与 ncols 表示要划分几行几列的子区域(nrows*nclos表示子图数量),index 的初始值为1,用来选定具体的某个子区域。

data = np.arange(100, 200) # 数据

plt.subplot(121) # 分成1x2的区域,占用编号为1的区域

plt.plot(data)

plt.subplot(122) # 分成1x2的区域,占用编号为2的区域

plt.plot(-data)

plt.show()

请添加图片描述

通过subplots() 函数创建多个子图

subplots() 函数,它的使用方法和 subplot() 函数类似。其不同之处在于,subplots() 既创建了一个包含子图区域的画布,又创建了一个 figure 图形对象,而 subplot() 只是创建一个包含子图区域的画布。

fig , axes = plt.subplots(nrows, ncols)

nrows 与 ncols 表示两个整数参数,它们指定子图所占的行数、列数

data = np.arange(100, 200) # 数据

fig, axes = plt.subplots(2, 2) # 分成2x2矩阵区域,返回子图数组axes

print(axes)

ans:

[[AxesSubplot: AxesSubplot:]

[AxesSubplot: AxesSubplot:]]

Process finished with exit code 0

data = np.arange(100, 200) # 数据

fig, axes = plt.subplots(2, 2) # 分成2x2矩阵区域,返回子图数组axes

ax1 = axes[0, 0] # 取出第一个子视图

ax2 = axes[0, 1]

ax3 = axes[1, 0]

ax4 = axes[1, 1]

ax1.plot(data)

ax2.plot(-data)

ax3.plot(2*data)

ax4.plot(-2*data)

plt.show()

请添加图片描述

添加各类标签

绘图的时候我们为了使绘制的图形更加直观,我们通常会给图像添加横、纵坐标等标签,常用的标签列举如下:

请添加图片描述

data = np.arange(0, 1.1, 0.01)

plt.title(“Title”) # 设置标题

plt.xlabel(“x”) # 添加x轴的名称

plt.ylabel(“y”) # 添加y轴的名称

设置x和y轴的刻度

plt.xticks([0, 0.5, 1])

plt.yticks([0, 0.5, 1.0])

绘制y=x^2曲线

plt.plot(data, data ** 2)

绘制y=x^3曲线

plt.plot(data, data ** 3)

添加图例

plt.legend([“y=x^2”, “y=x3”])

在本机上显示图形

plt.show()

请添加图片描述

**Tip:**中文无法正常显示时添加如下代码即可~

import matplotlib.pyplot as plt

plt.rcParams[“font.sans-serif”]=[“SimHei”] #设置字体

plt.rcParams[“axes.unicode_minus”]=False #该语句解决图像中的“-”负号的乱码问题

绘制常见图表


请添加图片描述

绘制直方图

plt.hist(x, bins, range, color) # 常用的参数,其他忽略

x:输入值,可以是单个数组,或者数组序列

bins:绘制条柱的个数,整数值,返回整数值+1个,默认为10

range: bins的上下范围

color:表示条柱的颜色

data = [34, 23, 45, 35, 66, 78, 16, 99]

plt.hist(data, bins=8, color=‘yellow’)

plt.show()

请添加图片描述

绘制柱形图

plt.bar(x, height, width, color, edgecolor, align)

x:表示x轴数据

height:表示条形高度

width:表示条形宽度,默认0.8

color:表示条形颜色

edgecolor:表示条形边框颜色

创建图形对象

fig = plt.figure()

添加子图区域,参数值表示[left, bottom, width, height ]

ax = plt.subplot(1, 1, 1)

准备数据1

langs1 = [‘C’, ‘C++’, ‘Java’, ‘Python’, ‘PHP’]

students1 = [23, 17, 35, 29, 12]

准备数据2

langs2 = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’]

students2 = [53, 27, 30, 22, 12]

绘制柱状图

在这里插入图片描述

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐