2024年Python最新Python-Matplotlib可视化(1)——一文详解常见统计图的绘制(2)

  • 读取数据文件绘制曲线图

  • 散点图

  • 条形图

    • 单组条形图
    • 垂直条形图
  • 水平条形图

  • 多组条形图

  • 堆积条形图

  • 对称条形图

  • 饼图

  • 直方图

  • 箱形图

  • 三角网格图

  • 系列链接

matplotlib库


Matplotlib是Python的绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成出版质量级别的精美图形,Matplotlib使绘图变得非常简单,在易用性和性能间取得了优异的平衡。

曲线图


曲线图的绘制

作为绘图程序的Hello World,我们将首先绘制一条简单的曲线。同时还将简单介绍matplotlib的工作原理。

plot.py

import matplotlib.pyplot as plt

x = range(50)

y = [value * 2 for value in x]

plt.plot(x, y)

plt.show()

上述代码将会绘制曲线y=2*x,其中x在[0,50]范围内,如下所示:

绘制折线图可以看到窗口上方还包含多个图标,其中:

| 项目 | Value |

| — | — |

| “保存”图标 | 此按钮用于将所绘制的图形另存为所需格式的图片,包括png,jpg,pdf,svg等常见格式 |

| “调节”图标 | 此按钮用于调整图片的尺寸,边距等图片属性 |

| “缩放”图标 | 此按钮用于缩放图片,用于观察图形细节,单击此按钮后,在图形上使用鼠标左键拖拽进行放大,使用鼠标右键拖拽进行缩小 |

| “移动”图标 | 此按钮用于移动图形,可以与“缩放”按钮结合观察放大后图片的具体细节,同时,单击此按钮后,在图形上使用鼠标右键拖拽可以缩放坐标轴的比例 |

| “还原”图标 | 此按钮用于将图形恢复到其初始状态,取消缩放、移动等操作 |

Tips:plt.plot(x, y)用于绘制一条曲线,其中,曲线点的x坐标在列表x中给出,曲线点的y坐标在列表y中给出。

由于matplotlib它只专注于绘图,因此如果想从文件中读取输入或进行一些中间计算,那么必须使用Python模块,但不用担心,matplotlib与其他模块具有良好的兼容性,并不涉及过多的技巧。例如,要生成大量统计图形,可能需要使用科学计算包,如Numpy和Python的文件读取I/O模块。在接下来的讲解中会给出相应的示例。

结合Numpy库,绘制曲线图

绘制曲线cos(x),x在[0, 2*pi]区间内:

cos_1.py

import math

import matplotlib.pyplot as plt

scale = range(100)

x = [(2 * math.pi * i) / len(scale) for i in scale]

y = [math.cos(i) for i in x]

plt.plot(x, y)

plt.show()

若采用Numpy库,则可以使用以下等效代码:

cos_2.py

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0, 2 * np.pi, 100)

y = np.cos(x)

plt.plot(x, y)

plt.show()

所绘制图形如下所示:

sin(x)Tips:虽然Numpy对于可视化而言并非必要,但可以看出使用Numpy库可以更加高效。

Numpy可以一次对整个数组执行操作,可以使代码更高效,以绘制[-10,10]区间内的曲线 y = x 3 + 5 x − 10 y=x^3+5x-10 y=x3+5x−10为例:

plot_np.py

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(-10, 10, 800)

y = x ** 3 + 5 * x - 10

plt.plot(x, y)

plt.show()

绘制图形如下

y=x^3+5x-10

绘制多曲线图

很多时候我们需要对比多组数据,以发现数据间的异同,此时就需要在一张图片上绘制多条曲线——多曲线图,下图展示了在同一图片中绘制函数 y = x y=x y=x、 y = x 2 y=x^2 y=x2, y = l o g e x y=log_ex y=loge​x以及 y = s i n ( x ) y=sin(x) y=sin(x):

plot_multi_curve.py

import numpy as np

import matplotlib.pyplot as plt

x = np.linspace(0.1, 2 * np.pi, 100)

y_1 = x

y_2 = np.square(x)

y_3 = np.log(x)

y_4 = np.sin(x)

plt.plot(x,y_1)

plt.plot(x,y_2)

plt.plot(x,y_3)

plt.plot(x,y_4)

plt.show()

上述脚本绘制图形如下:

多曲线图

Tips:一条曲线的绘制需要调用一次plt.plot(),而plt.show()只需调用一次。这种延迟呈现机制是matplotlib的核心,我们可以声明在任何时间绘制图形,但只有在调用plt.show()时才会渲染显示图形。

为了更好的说明这种延迟呈现机制,编写以下代码:

deferred_rendering.py

import numpy as np

import matplotlib.pyplot as plt

def plot_func(x, y):

x_s = x[1:] - y[:-1]

y_s = y[1:] - x[:-1]

plt.plot(x[1:], x_s / y_s)

x = np.linspace(-5, 5, 200)

y = np.exp(-x ** 2)

plt.plot(x, y)

plot_func(x, y)

plt.show()

绘制图形如下:

延迟呈现示例

可以看到,尽管其中一个plt.plot()是在plot_func函数中调用的,它对图形的呈现没有任何影响,因为plt.plot()只是声明了我们要呈现的内容,但还没有执行渲染。因此可以使用此特性结合for循环、条件判断等语法完成复杂图形的绘制,同时也可以在同一张图中组合不同类型的统计图。

读取数据文件绘制曲线图

很多情况下数据都是存储于文件中,因此,需要首先读取文件中的数据,再进行绘制,说明起见,以.txt文件为例,其他诸如Excel、CSV文件可以使用pandas、numpy等库进行读取。

假设存在data.txt文件如下:

0 1

1 2

2 5

4 17

5 26

6 37

读取数据和绘制的代码如下:

read_txt.py

import matplotlib.pyplot as plt

x, y = [], []

for line in open(‘data.txt’, ‘r’):

values = [float(s) for s in line.split()]

x.append(values[0])

y.append(values[1])

plt.plot(x, y)

plt.show()

如果使用Numpy库,其等效代码可以写为:

import matplotlib.pyplot as plt

import numpy as np

data = np.loadtxt(‘data.txt’)

plt.plot(data[:,0], data[:,1])

plt.show()

绘制图形

散点图


当绘制曲线图时,我们假设点与点之间存在序列关系。而散点图是简单地绘制点,它们之间并不存在连接。

import numpy as np

import matplotlib.pyplot as plt

data = np.random.rand(1000, 2)

plt.scatter(data[:,0], data[:,1])

plt.show()

散点图Tips:函数plt.scatter()的调用方式与plt.plot()完全相同,分别将点的x和y坐标作为输入参数。

条形图


条形图具有丰富的表现形式,常见的类型包括单组条形图,多组条形图,堆积条形图和对称条形图等。

单组条形图

条形图的每种表现形式都可以绘制成垂直条形图或水平条形图,以单组条形图的两种绘制方式为例。

垂直条形图

import matplotlib.pyplot as plt

data = [10., 20., 5., 15.]

plt.bar(range(len(data)), data)

plt.show()

垂直条形图Tips:plt.plot()函数的作用是:接收两个参数,包括每个条形的x坐标和每个条行的高度。

通过可选参数width,pyplot.bar()提供了一种控制条形图中条状宽度的方法:

import matplotlib.pyplot as plt

data = [10., 20., 5., 15.]

plt.bar(range(len(data)), data, width=0.5)

plt.show()

修改条形图宽度

水平条形图

如果更喜欢水平条形外观,就可以使用plt.barh()函数,在用法方面与plt.bar()基本相同,但是修改条形宽度(或者在水平条形图中应该称为高度)的参数需要使用height

import matplotlib.pyplot as plt

data = [10., 20., 5., 15.]

plt.barh(range(len(data)), data, height=0.5)

plt.show()

水平条形图

多组条形图

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

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

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

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matplotlib是一个流行的Python可视化库,它可以用来绘制各种类型的图表,包括线图、散点图、柱状图、饼图等等。在本文中,我们将介绍如何使用Matplotlib绘制多个变量的图表。 首先,我们需要导入Matplotlib库,并生成一些数据用于绘图。例如,我们可以使用NumPy库生成一些随机数据: ```python import matplotlib.pyplot as plt import numpy as np # 生成数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) ``` 接下来,我们可以使用Matplotlib的plot函数绘制两个不同的线图: ```python # 绘制两个线图 plt.plot(x, y1, label='sin') plt.plot(x, y2, label='cos') # 添加图例 plt.legend() # 显示图表 plt.show() ``` 这将生成一个包含两个线图的图表,并在图例中显示每个线的标签。 如果我们想要绘制一个包含多个变量的图表,我们可以使用Matplotlib的subplot函数创建多个子图。例如,我们可以使用如下代码创建一个包含两个子图的图表: ```python # 创建包含两个子图的图表 fig, axs = plt.subplots(2) # 在第一个子图中绘制sin函数 axs[0].plot(x, y1) axs[0].set_title('sin') # 在第二个子图中绘制cos函数 axs[1].plot(x, y2) axs[1].set_title('cos') # 调整子图之间的间距 plt.tight_layout() # 显示图表 plt.show() ``` 这将生成一个包含两个子图的图表,每个子图都包含一个变量的图表。我们可以通过调整subplot函数的参数来创建包含更多子图的图表。 除了使用subplot函数,Matplotlib还提供了许多其他的绘图函数和工具,可以帮助我们创建各种类型的图表。例如,我们可以使用scatter函数创建散点图,使用bar函数创建柱状图,使用pie函数创建饼图等等。Matplotlib的文档中包含了详细的说明和示例,可以帮助我们学习如何使用这些功能来绘制各种类型的图表。 总之,Matplotlib是一个功能强大的Python可视化库,可以帮助我们创建各种类型的图表。通过使用subplot函数和其他绘图函数,我们可以轻松地绘制包含多个变量的图表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值