python matplotlib库的基本使用

matplotlib简介

如果你在大学里参加过数学建模竞赛或者是用过MATLAB的话,相比会对这一款软件中的画图功能印象深刻。MATLAB可以做出各种函数以及数值分布图像非常的好用和方便。如果你没用过呢也没关系,知道这么回事就好了。MATLAB虽然好用,但毕竟是收费软件,而且相比于MATLAB,很多人更喜欢Python的语法。

所以呢MATLAB就被惦记上了,后来有大神仿照MATLAB当中的画图工具,也在Python当中开发了一个类似的作图工具。这也就是我们今天这篇文章要讲的matplotlib,也是Python、数据分析以及机器学习领域当中使用最广泛的作图工具包,几乎没有之一。前段时间不是美国政府搞事情,导致MATLAB公司宣布对中国的几所高校禁止使用MATLAB嘛,有一些人就提出来说我们可以使用Python当中的一些开源工具代替,当然MATLAB当中还有很多其他厉害的功能,Python可能不一定能代替,但至少在作图这个领域是没问题的。

matplotlib 基本用法

matplotlib广泛流行的一个非常主要的原因就是它方便、好用,我们来看几个经典的例子就知道了,短短几行代码就可以作出质量非常高的图。

我们使用的是matplotlib这个包下的pyplot这个库,从名字上我们也看得出来它是Python库。如果你安装了Anaconda这样完整的Python包管理工具的话,那么这个包默认应该已经装好了。如果没有,可以使用pip安装一下,命令也非常简单。

pip install matplotlib

装好了包之后,我们通常的使用惯例是将它重命名成plt,所以如果你阅读一些源码以及其他大神的代码,作图的时候经常会出现plt.xxx,就是这么来的。

import matplotlib.pyplot as plt

plot当中有几种常用的作图工具,第一种是作折线图或者是曲线图的,叫做plot。第二种是作柱状图的叫做hist,第三种是作散点图的,叫做scatter,第四种是作饼状图的。除此之外还可以作一些三维的图像,但是一般日常当中使用得比较少,大部分是用来炫技的。

曲线图

plot其实是用来作曲线图的,采用的方法是描点呈现,它会将我们的数据点串联起来,成为一条光滑的曲线。当然,作折线、直线也都是可以的,最后成图的效果完全是由我们的数据决定的。

它的使用方法很简单,在最基本的用法当中,我们只需要传入两个list,分别代表x轴和y轴的值即可。比如我们要作出一个logistic的函数图像。我们可以这样:

x = np.linspace(-10, 10, 100)
y = 1 / (1 + np.exp(-x))

plt.plot(x, y)
plt.show()

在上面的代码当中我们首先使用numpy当中的linspace函数生成了一个-10到10之间的numpy数组。这个数组当中有100个点,在-10到10之间均匀分布。我们对它计算对应的logistic函数的值,也就是1 / (1 + np.exp(-x))。这个函数我想大家都应该很熟悉了,x是一个一百个点的list,对应的y也是一个一百个点的list。也就是说一个x对应一个y构成了一个点对,代表图中的一个坐标。

我们不需要做任何转化,只需要把这两个数组传入plt当中,它会自动替我们完成坐标的映射。最后呈现的效果如下。

我们可以看到作图的效果还是不错的,除了把图像完成的绘制出来之外,还替我们在坐标轴上画上了点位,方便我们查看数据。

直方图

hist可以用来绘制直方图,这也是我们非常常见的图像。在财经领域我们经常用直方图反应一个数据的走势,在数据分析和机器学习当中我们也经常用直方图来反应某一个特征或者是值的分布。

在直方图当中我们只需要传入一个数组,就是我们要求分布的数组,另外我们需要再输入一个参数bins,表示我们希望将数据分桶的数量。然后它会绘制出每个桶中数据数量的直方图,这样我们就可以很直观地看出分布来了。

x = np.random.normal(size=200)
plt.hist(x,bins=30)
plt.show()

这里我们调用numpy当中以正态分布概率随机的函数,得到的结果应该是正态分布的。

我们查看图像,这个结果和我们的预期基本吻合。

点状图

第三种图像叫做散点图,它反应的是每个点的分布情况。比如我们之前在介绍KNN和Kmeans模型的时候曾经都作过散点图,一个点代表一个样本,通过散点图我们观察的也是样本和数据分布的情况。但是和直方图相比它更加得直观,我们能直接看到分布,而不是一个分布的统计结果。

但是它也有缺点,缺点就是我们只能观察二维平面当中的点的分布,毕竟超过3维的维度就没办法绘制了。而且3维的数据分布也不是很好观察。

同样散点图的绘制也很简单,我们只需要调用scatter函数传入x和y的数组即可。

x = np.random.rand(100)
y = np.random.rand(100)

plt.scatter(x, y)

这里我们的x和y都是随机分布,所以得到的结果是散乱没有规律的点。

饼状图

最后我们来看下饼状图,饼状图也很常用,虽然也是反映的数据分布,但是它更多是体现某一个值占的比例。通过饼状图,我们可以很直观地了解到这点。

我们可以传入一个list进入pie函数,plot会根据list当中值在总体的占比绘制饼状图。我们来看个很简单的例子:

a = np.array([0.5, 0.3, 0.2, 0.1, 0.8])

plt.pie(a)

得到的结果如下:

和之前的结果相比饼状图稍稍不清晰一些,因为它虽然用不同颜色区分了不同的区域的,但是我们很难直观地看出来每一个区域分别代表什么。这个问题是可以解决的,我们可以通过传入一些参数和设定来让它展示更多的信息,让数据变得更加生动以及清晰。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、转发、点赞)。

以上就是python matplotlib库的基本使用的详细内容,更多关于python matplotlib的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python读取多列数据以及用matplotlib制作图表方法实例

    多列数据的读入以及处理 这次我们用到的数据是煤炭5500周价格的最高价和最低价.左侧为价格的数据表格,右侧为日期. 一.导入数据 这里我们就直接跳过讲解,如有不懂的,详见上一篇博客.见代码. import matplotlib.pyplot as plt import re plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体 plt.rcParams['axes.unicode_minus'] = False # 设置正负号 # 导入数据,日期

  • Python matplotlib图例放在外侧保存时显示不完整问题解决

    上次说到的,使用如下代码保存矢量图时,放在外侧的图例往往显示不完整: import numpy as np import matplotlib.pyplot as plt fig, ax = plt.subplots() x1 = np.random.uniform(-10, 10, size=20) x2 = np.random.uniform(-10, 10, size=20) #print(x1) #print(x2) number = [] x11 = [] x12 = [] for i

  • Python matplotlib 绘制双Y轴曲线图的示例代码

    Matplotlib简介 Matplotlib是非常强大的python画图工具 Matplotlib可以画图线图.散点图.等高线图.条形图.柱形图.3D图形.图形动画等. Matplotlib安装 pip3 install matplotlib#python3 双X轴的 可以理解为共享y轴 ax1=ax.twiny() ax1=plt.twiny() 双Y轴的 可以理解为共享x轴 ax1=ax.twinx() ax1=plt.twinx() 自动生成一个例子 x = np.arange(0.,

  • 解决Python Matplotlib绘图数据点位置错乱问题

    在绘制正负样本在各个特征维度上的CDF(累积分布)图时出现了以下问题: 问题具体表现为: 1.几个负样本的数据点位置倒错 2.X轴刻度变成了乱七八糟一团鬼东西 最终解决办法 造成上述情况的原因其实是由于输入matplotlib.plot()函数的数据x_data和y_data从CSV文件中直接导入后格式为string,因此才会导致所有数据点的x坐标都被直接刻在了x轴上,且由于坐标数据格式错误,部分点也就表现为"乱点".解决办法就是导入x,y数据后先将其转化为float型数据,然后输入p

  • Python matplotlib读取excel数据并用for循环画多个子图subplot操作

    读取excel数据需要用到xlrd模块,在命令行运行下面命令进行安装 pip install xlrd 表格内容大致如下,有若干sheet,每个sheet记录了同一所学校的所有学生成绩,分为语文.数学.英语.综合.总分 考号 姓名 班级 学校 语文 数学 英语 综合 总分 ... ... ... ... 136 136 100 57 429 ... ... ... ... 128 106 70 54 358 ... ... ... ... 110.5 62 92 44 308.5 画多张子图需要

  • python使用matplotlib绘制折线图的示例代码

    示例代码如下: #!/usr/bin/python #-*- coding: utf-8 -*- import matplotlib.pyplot as plt # figsize - 图像尺寸(figsize=(10,10)) # facecolor - 背景色(facecolor="blue") # dpi - 分辨率(dpi=72) fig = plt.figure(figsize=(10,10),facecolor="blue") #figsize默认为4,

  • Python Matplotlib简易教程(小白教程)

    简单演示 import matplotlib.pyplot as plt import numpy as np # 从[-1,1]中等距去50个数作为x的取值 x = np.linspace(-1, 1, 50) print(x) y = 2*x + 1 # 第一个是横坐标的值,第二个是纵坐标的值 plt.plot(x, y) # 必要方法,用于将设置好的figure对象显示出来 plt.show() import matplotlib.pyplot as plt import numpy as

  • python Matplotlib模块的使用

    一.Matplotlib简介与安装 Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库.它可与NumPy一起使用,提供了一种有效的MATLAB开源替代方案.它也可以和图形工具包一起使用,如PyQt和wxPython. 安装方式:执行命令 pip install matplotlib 一般常用的是它的子包PyPlot,提供类似MATLAB的绘图框架. 二.使用方法 1.绘制一条直线 y = 3 * x + 4,其中 x 在(-2, 2),取100个点

  • Python之Matplotlib文字与注释的使用方法

    可视化对于大家来说确实是有关的,因为确实是直观的,每一组大数据如果可以用可视化进行展示的话可以让大家豁然开朗.但在另外一些场景中,辅之以少量的文字提示(textual cue)和标签是必不可少的.虽然最基本的注释(annotation)类型可能只是坐标轴标题与图标题,但注释可远远不止这些.让我们可视化一些数据,看看如何通过添加注释来更恰当地表达信息. 首先导入画图需要用到的一些函数: import matplotlib.pyplot as plt import matplotlib as mpl

  • Python Matplotlib绘图基础知识代码解析

    1.Figure和Subplot import numpy as np import matplotlib.pyplot as plt #创建一个Figure fig = plt.figure() #不能通过空figure绘图,必须使用add_subplot创建一个或多个subplot #图像为2x2,第三个参数为当前选中的第几个 ax1 = fig.add_subplot(2, 2, 1) ax2 = fig.add_subplot(2, 2, 2) ax3 = fig.add_subplot

随机推荐