Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-1

简介: Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)

一、Matplotlib简介

1. 什么是Matplotlib

Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。

通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库。


2. Matplotlib的安装
  1. Windows 系统安装 Matplotlib,执行如下命令:
  • pip install matplotlib

换源安装执行命令:

二、绘制基础

在使用Matplotlib绘制图形时,其中有两个最为常用的场景。一个是画点,一个是画线。pyplot基本方法的使用如下表。

1. 绘制直线

在使用Matplotlib绘制线性图时,其中最简单的是绘制线图。在下面的实例代码中,使用Matplotlib绘制了一个简单的直线。具体实现过程如下:


  • 导入模块pyplot,并给它指定别名plt,以免反复输入pyplot。在模块pyplot中包含很多用于生产图表的函数。
  • 将绘制的直线坐标传递给函数plot()。
  • 通过函数plt.show()打开Matplotlib查看器,显示绘制的图形。

【示例】根据两点绘制一条线

# 导入matplotlib模块
import matplotlib.pyplot as plt

# 准备要绘制点的坐标(1, 2) (4, 8)
# 调用绘制plot方法
plt.plot([1, 4], [2, 8])  # 第一个中括号里是绘制点的横坐标,第二个为绘制点的纵坐标
# 显示绘制的图
plt.show()

注意:在运行以上代码是可能会出现以下类似的报错:

f311dfaa16a1c6f327df459a3263b5c0_5bc9efe190954462ba7197beaed82273.png

这个错误是因为你的Matplotlib使用了一个名为backend_interagg的后端,但该后端没有FigureCanvas属性。可以尝试更改Matplotlib的后端配置。

例如在代码的开头添加以下代码来更改Matplotlib的后端为默认的TkAgg后端:

import matplotlib
matplotlib.use('TkAgg')

运行效果如下:

2. 绘制折线图

在上述的实例代码中,使用两个坐标绘制一条直线,接下来使用平方数序列1、9、25、49和81来绘制一个折线图。

【示例】绘制折线图

# 导入matplotlib模块
import matplotlib.pyplot as plt

# 准备绘制点的坐标
x = [1, 3, 5, 7, 9]  # 绘制点的横坐标
y = [1, 9, 25, 49, 81]  # 绘制点的纵坐标
# 调用绘制plot方法
plt.plot(x, y)
# 显示绘制的图
plt.show()

运行效果如下:

3. 设置样式

【示例】绘制折线图并设置样式

# 导入matplotlib模块
import matplotlib.pyplot as plt

# 准备绘制点坐标
x = [1, 2, 3, 4, 5]
y = [1, 8, 27, 64, 125]
# 调用绘制plot方法
# 利用linewidth属性设置线条的宽度
plt.plot(x, y, linewidth=5)
# 添加x,y轴名称
plt.xlabel('x', fontsize=14)  # fontsize: 设置字体大小
plt.ylabel('x^3', fontsize=14)
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签,字体可自由设置电脑中自带的字体
# 给图标添加标题
plt.title('折线绘制图', fontsize=24)
# 显示绘制的图
plt.show()

运行效果如下:

Matplotlib 默认情况不支持中文,我们可以使用以下简单的方法来解决:

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
4. 绘制曲线图

【示例】绘制一元二次方程的曲线y=x^2

这里我们先遍历-100到100之间的整数,然后利用列表推导式求出他们的平方值

# 导入matplotlib模块
import matplotlib.pyplot as plt

# 准备绘制点坐标
x = range(-100, 100)  # range函数用于生成一个整数序列,这里用于生成-100到100的整数
y = [i ** 2 for i in x]  # 列表推导式生成了一个包含-100到100的平方的列表
# 调用绘制plot方法
plt.plot(x, y)
# 保存图片
# plt.savefig('一元二次方程曲线图')  # 默认图片格式为png
plt.savefig('一元二次方程曲线图.jpg')  # 设置图片格式
# 显示绘制的图
plt.show()

运行效果如下:

4515a595c9ee2cd67638b022e0663ea6_ac27c5fbb6e24c39bd1f2ce4bcbbbb34.png

【示例】绘制正弦曲线和余弦曲线

使用plt函数绘制任何曲线的第一步都是生成若干个坐标点(x,y),坐标点越多越好。取0到10之间100个等差数作为x的坐标,然后将这100个x坐标值一起传入Numpy的sin和cos函数,就会得到100个y坐标值,最后就可以使用plot函数绘制正弦曲线和余弦曲线。

# 导入matplotlib和numpy模块
import matplotlib.pyplot as plt
import numpy as np

# 生成0-10之间100个等差数列
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)  # sin函数用于计算给定角度的正弦值
cos_y = np.cos(x)  # cos函数用于计算给定角度的余弦值
# 调用绘制plot方法
plt.plot(x, sin_y)  # 默认第一条曲线颜色为蓝色,第二条为橘色
plt.plot(x, cos_y)
# 保存图片
plt.savefig('正弦余弦曲线图.jpg')
# 显示绘制的图片
plt.show()

运行效果如下:

上面的示例可以看到,调用两次plot函数,会将sin和cos曲线绘制到同一个二维坐标系中,如果想绘制到两张画布中,可以调用subplot()函数将画布分区。

【示例】将画布分为区域,将图画到画布的指定区域

# 导入matplotlib和numpy模块
import matplotlib.pyplot as plt
import numpy as np

# 生成0-10之间的100个等差数列
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
cos_y = np.cos(x)
# 对画布进行分区处理, (行数, 列数, 哪个区域) 将画布分为2行2列
plt.subplot(2, 2, 1)  # 将图画在区1
# 修改x, y轴的坐标
plt.xlim(-5, 20)
plt.ylim(-2, 2)
plt.plot(x, sin_y)

plt.subplot(2, 2, 2)  # 将图画在区2
plt.plot(x, cos_y)
# 显示绘制的图片
plt.show()

运行效果如下:

5. 绘制散点图

使用scatter函数可以绘制随机点,该函数需要接收x坐标和y坐标的序列。

【示例】sin和cos函数的散点图

# 导入matplotlib和numpy模块
import matplotlib.pyplot as plt
import numpy as np

# 生成0-10之间的100个等差数列
x = np.linspace(0, 10, 100)
sin_y = np.sin(x)
cos_y = np.cos(x)
# 绘制正弦余弦图
# plt.plot(x, sin_y, 'o')  # 加一个参数'o'效果与scatter是一样的
# plt.plot(x, cos_y, 'o')
# 绘制散点图
plt.scatter(x, sin_y)
plt.scatter(x, cos_y)
# 显示绘制的图
plt.show()

运行效果如下:

【示例】使用scatter画10中大小100中颜色的散点图

# 导入matplotlib和numpy模块
import matplotlib.pyplot as plt
import numpy as np

# 创建x, y
np.random.seed(0)  # 执行多次,通过设置相同的种子,可以确保每次运行生成的随机数序列是可重复的。
x = np.random.rand(100)  # 生成100个[0, 1)之间的随机数
y = np.random.rand(100)
# 生成100种不同大小
size = np.random.rand(100) * 1000  # 乘一千扩大范围,效果跟明显
# 生成100种不同的颜色
color = np.random.rand(100)
# print(x)
# 绘制散点图
plt.scatter(x, y, s=size, c=color, alpha=0.8)  # s表示大小, c表示颜色,alpha表示透明度
plt.show()

运行效果如下:

注意:这里生成的点的大小个数和颜色个数必须要与点的个数相同。

作为线性图的替代,可以通过向 plot() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

image.png

以下是颜色的缩写:

image.png

【示例】不同种类不同颜色的线

# 导入模块
import matplotlib.pyplot as plt
import numpy as np

# 创建0-10之间的100个等差数列
x = np.linspace(0, 10, 100)
# 调用绘制plot方法
plt.plot(x, x + 0, '-g')  # 实线 绿色
plt.plot(x, x + 1, '--c')  # 虚线 浅蓝色
plt.plot(x, x + 2, '-.k')  # 点划线 黑色
plt.plot(x, x + 3, 'or')  # 圆标记 红色
plt.plot(x, x + 4, 'xy')  # 叉叉 黄色
plt.plot(x, x + 5, 'dm')  # 砖石 品红色
# 显示绘制的图
plt.show()

运行效果如下:

【示例】不同种类不同颜色的线并添加图例

# 导入模块
import matplotlib.pyplot as plt
import numpy as np

# 创建0-10之间的100个等差数列
x = np.linspace(0, 10, 100)
# 调用绘制plot方法
# 给plot方法添加参数label
plt.plot(x, x + 0, '-g', label='-g')  # 实线 绿色
plt.plot(x, x + 1, '--c', label='--c')  # 虚线 浅蓝色
plt.plot(x, x + 2, '-.k', label='-.k')  # 点划线 黑色
plt.plot(x, x + 3, 'or', label='or')  # 圆标记 红色
plt.plot(x, x + 4, 'xy', label='xy')  # 叉叉 黄色
plt.plot(x, x + 5, 'dm', label='dm')  # 砖石 品红色
# 使用legend()添加图例
# 通过参数loc设置图例位置,默认在upper left左上角, fancybox边框  framealpha透明度  shadow阴影  borderpad边框宽度
plt.legend(loc='lower right', fancybox=True, framealpha=0.5, shadow=True, borderpad=1)
# 显示绘制的图
plt.show()

使用legend函数添加图例,通过参数loc设置图例位置,默认在upper left左上角, fancybox边框 framealpha透明度 shadow阴影 borderpad边框宽度。

运行效果如下:


Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)-2

https://developer.aliyun.com/article/1537820

相关文章
|
18天前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
33 1
|
21小时前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
【7月更文挑战第23天】在数据驱动时代,Python通过Matplotlib与Seaborn引领数据可视化新纪元。Matplotlib基础强大,提供广泛绘图选项;Seaborn则简化流程,图表更美观,适合快速可视化。两者结合,轻松应对复杂定制需求,将数据转化为生动故事,支持决策与交流。
13 6
|
21小时前
|
机器学习/深度学习 数据可视化 开发者
视觉的力量!Python 机器学习模型评估,Matplotlib 与 Seaborn 如何助力决策更明智?
【7月更文挑战第23天】在Python机器学习中,模型评估不可或缺。Matplotlib与Seaborn作为数据可视化工具,助力洞察模型性能。Matplotlib基础灵活,构建复杂图表;Seaborn在其上层,简化绘图,提升美观。从折线图追踪损失到条形图对比准确率,两者互补,促进高效决策制定。尽管Matplotlib掌控力强,但Seaborn友好快捷,适于统计图形。结合使用,可将数据转化成深刻见解。
|
21小时前
|
数据可视化 数据挖掘 数据处理
深度挖掘!Python 数据分析中 Matplotlib 与 Seaborn 的隐藏功能,让数据可视化更出彩!
【7月更文挑战第23天】在Python数据分析中,Matplotlib与Seaborn是关键的可视化工具。Matplotlib提供深度自定义,如调整轴刻度和网格,支持多子图布局。Seaborn基于Matplotlib,简化美观图表生成,内置主题与调色板,适用于复杂统计图形如小提琴图和成对关系图,且无缝集成Pandas数据框。掌握这些库的高级功能,能显著提升数据可视化效果,助力数据分析决策。
9 4
|
1天前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
【7月更文挑战第22天】数据可视化在Python数据科学中至关重要,Matplotlib和Seaborn提供强大工具。案例展示如何用它们分析房屋售价数据:Matplotlib绘制面积与售价散点图揭示正相关,Seaborn的pairplot展示多变量关系。在建模阶段,特征重要性通过条形图可视化,辅助模型优化。这两库是理解数据和提升模型性能的关键。
13 3
|
1天前
|
数据可视化 数据挖掘 Linux
震撼发布!Python数据分析师必学,Matplotlib与Seaborn数据可视化实战全攻略!
【7月更文挑战第22天】数据科学中,Matplotlib和Seaborn是Python的可视化主力。Matplotlib用于基础图表,如示例中的折线图;Seaborn则强化统计图形,如分布图。两者结合能创建复杂的可视化,如显示趋势与分布的同一图表。通过学习和运用这些工具,数据分析师能提升效率,更好地讲述数据故事。
12 2
|
1天前
|
数据可视化 数据挖掘 Python
逆袭之路!Python数据分析新手如何快速掌握Matplotlib、Seaborn,让数据说话更响亮?
【7月更文挑战第22天】在数据驱动时代,新手掌握Python的Matplotlib与Seaborn可视化技能至关重要。Matplotlib, 基础且灵活, 适合初学者绘制基础图表; Seaborn在其上提供更高级接口, 专注统计图形和美观样式。建议先学Matplotlib掌握核心技能, 再用Seaborn提升图表质量。快速上手Matplotlib需实践, 如绘制折线图。Seaborn特色功能含分布图、关系图、分类数据可视化及高级样式设定。结合两者可实现复杂数据可视化, 先Seaborn后Matplotlib微调。持续实践助你灵活运用工具, 让数据生动呈现, 助力分析与决策。
11 2
|
18天前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
33 3
|
18天前
|
数据可视化 数据挖掘 API
数据可视化秘籍聚焦Python的Matplotlib和Seaborn库,它们是数据分析的得力工具。
【7月更文挑战第5天】数据可视化秘籍聚焦Python的Matplotlib和Seaborn库,它们是数据分析的得力工具。Matplotlib是基础库,提供高度自定义的2D图表,而Seaborn在其上构建,提供美观的统计图形。文章介绍了如何用两者画线图、散点图、条形图、饼图和直方图,展示数据趋势和关系。
|
1天前
|
数据可视化 数据挖掘 数据处理
数据之美,尽收眼底!Python数据分析师如何利用Matplotlib、Seaborn打造视觉盛宴,征服数据世界?
【7月更文挑战第22天】Python的Matplotlib和Seaborn库是数据可视化的利器。Matplotlib基础强大,灵活定制,适合各类图表;Seaborn在其上层封装,提供美观的统计图形,简化复杂操作。结合使用,它们助数据分析师揭示数据规律,打造视觉盛宴,征服数据世界。示例代码分别展示了如何绘制正弦波图和箱线图。