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

您所在的位置:网站首页 word怎么绘制曲线图和折线图 Python学习笔记之Matplotlib模块入门(直线图、折线图、曲线图、散点图、柱状图、饼状图、直方图、等高线图和三维图的绘制)

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

2024-07-10 06:43| 来源: 网络整理| 查看: 265

文章目录 一、Matplotlib简介1. 什么是Matplotlib2. Matplotlib的安装 二、绘制基础1. 绘制直线2. 绘制折线图3. 设置样式4. 绘制曲线图5. 绘制散点图6. 绘制柱状图7. 绘制饼状图8. 绘制直方图9. 绘制等高线图10. 绘制三维图

一、Matplotlib简介 1. 什么是Matplotlib

Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。 通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库。

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

换源安装执行命令:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 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()

注意:在运行以上代码是可能会出现以下类似的报错: 在这里插入图片描述 这个错误是因为你的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()

运行效果如下: 在这里插入图片描述 【示例】绘制正弦曲线和余弦曲线 使用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() 函数添加格式字符串来显示离散值。 可以使用以下格式化字符。

字符描述‘-’实线样式‘–’短横线样式‘-.’点划线样式‘:’虚线样式‘.’点标记‘,’像素标记‘o’圆标记‘v’倒三角标记‘^’正三角标记‘1’下箭头标记‘2’上箭头标记‘3’左箭头标记‘4’右箭头标记‘s’正方形标记‘p’五边形标记‘*’星形标记‘h’六边形标记 1‘H’六边形标记 2‘+’加号标记‘x’X 标记‘D’菱形标记‘d’窄菱形标记‘_’水平线标记

以下是颜色的缩写:

字符颜色‘b’蓝色‘g’绿色‘r’红色‘c’青色‘m’品红色‘y’黄色‘k’黑色‘w’白色

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

# 导入模块 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边框宽度。 运行效果如下: 在这里插入图片描述

6. 绘制柱状图

使用bar函数可以绘制柱状图。柱状图需要水平的x坐标值,以及每一个x坐标值对应的y坐标值,从而形成柱状的图。柱状图主要用来纵向对比和横向对比的。例如,根据年份对销售收据进行纵向对比,x坐标值就表示年份,y坐标值表示销售数据。 【示例】使用bar绘制柱状图,并设置柱的宽度

# 导入matplotlib模块 import matplotlib.pyplot as plt # 创建x,y坐标 x = [1980, 1985, 1990, 1995] y = [1000, 3000, 4000, 5000] x_label = ['1980年', '1985年', '1990年', '1995年'] # 调用bar函数绘制柱状图 plt.bar(x, y, width=3) # 通过width修改柱的宽度,数值为标准柱宽度的倍数 # 设置字体解决中文乱码问题 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 # 通过xticks修改x坐标的值 # plt.xticks(x, x) plt.xticks(x, x_label) # 设置x,y轴的名称 plt.xlabel('年份') plt.ylabel('销量') # 设置图例名称 plt.title('年份销量对比图') # 显示绘制图形 plt.show()

运行效果如下: 在这里插入图片描述 注意:bar函数的宽度并不是像素宽度。bar函数会根据二维坐标系的尺寸,以及x坐标值的多少,自动确定每一个柱的宽度,而width指定的宽度就是这个标准柱宽度的倍数。该参数值可以是浮点数,如0.5,表示柱的宽度是标准宽度的0.5倍。 【示例】使用bar和barh绘制柱状图

# 导入模块 import matplotlib.pyplot as plt import numpy as np # 创建x,y np.random.seed(0) x = np.arange(5) # 生成[0, 5)之间的整数 y = np.random.randint(-5, 5, 5) # 随机生成[-5, 5)之间的整数 # 将画布分为一行两列,在第一部分用bar函数画 plt.subplot(1, 2, 1) # 在0位置处添加水平方向蓝色线条 plt.axhline(0, color='blue', linewidth=3) plt.bar(x, y, color='blue') # 在第二部分用barh函数画 plt.subplot(1, 2, 2) # 在0位置处添加垂直方向红色线条 plt.axvline(0, color='red', linewidth=2) plt.barh(x, y, color='red') # 显示绘制图形 plt.show()

运行效果如下: 在这里插入图片描述 【示例】对部分柱状图,使用颜色区分

# 导入模块 import matplotlib.pyplot as plt import numpy as np # 创建x,y np.random.seed(0) x = np.arange(5) # 生成[0, 5)之间的整数 y = np.random.randint(-5, 5, 5) # 随机生成[-5, 5)之间的整数 v_bar = plt.bar(x, y, color='blue') # 对y大于0的合作为蓝色,小于0设置为绿色 for bar, height in zip(v_bar, y): if height


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3