欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【实验楼/matplotlib.pyplot】matplotlib画图初览

程序员文章站 2022-03-29 19:25:08
...

matplotlib的使用方法

先导入相应的模块

from matplotlib import pyplot as plt

再使用plt中特有的方法来进行画图。

  1. 柱状图——plt.bar(专门用来比较大小)
  2. 直方图——plt.barh(专门用来查看分布)
  3. 饼状图——plt.pie(专门用来查看比例)
  4. 折线图——plt.plot(专门用来绘制相应函数图像)
  5. 散点图——plt.scatter
  6. 等高线图——plt.contour
    (注意区分直方图和柱状图的区别)

这些方法接受两个数组类型(包括ndarray类型以及所有可以转化为ndarray的类型)
我们可以使用numpy.linspace来生成相应的数组进行测试

自定义图形的样式

就是再相应的绘图函数中添加相应的关键字参数,比如:

  1. color——颜色
  2. linestyle——线型的样式
  3. linewidth——线型的宽度
  4. alpha——不透明度
    (除此之外还有很多,而且这里只给出了关键字参数的名字,并没有给出我们应该给他们赋予什么样的参数,所以我建议还是移步至官方文档)

组合图形样式

我们绘图中还有一个需求就是希望把不同的图像画在一起。当然我们plt肯定是实现了这些,只有当我们把使用相同的x内容的时候,matplotlib才会把这些图形都放在一起。

组合图形的时候,可能需要一种更加高级的操作。
那就是自己搭建图片的环境。

  1. 首先,先创建画板对象fig = plt.figure()
  2. 在画布对象的基础上创建画布对象axes = fig.add_axes([a, b, c, d])——注意这里a, b, c, d分别代表了画布左下角的两个坐标,以及画布的宽高
  3. 再使用axes的**plot方法(或者其它的方法)**画图。

还有一种方法也可以实现子图的绘制。
那就是利用plt.subplots().

然后通过这个函数返回的fig和axes对象(尤其是axes对象),
我们就能定制我们的输出了

规范画图方法

我们需要一套约定,来规范我们的画图流程,这样我们就能避免想怎么做,就怎么做的缺点。

一个比较好的建议是:不要仅仅是使用plt.plot来绘制图像,而应该使用plt.subplots方法来使用

·添加图表题,图例,xy轴代表的意义

  1. 添加图标题——axes.set_title()
  2. 添加xy轴名称——axes.set_xlabel(); axes.set_ylable();
  3. 添加图例——axes.legend();
    (你要知道图例在我们的axes上是一个单独的单元,我们可以通过传入一个list对象来进行绘制)

·添加坐标轴范围

使用**set_ylim()和set_xlim()**来设定坐标轴的范围

参数是一个两个元素的列表

·图形标注方法

如果我们能够在我们的图形上做一些标注,那我们的图形肯定会更加清晰。

你要知道的是我们在我们的axes上标注,只有plt.text方法,这个方法接受三个参数:

  1. 文本的x坐标
  2. 文本的y坐标
  3. 文本的内容,可以使用c的字符串格式化语法来做

一般而言我们会在柱状图上标注柱子所代表的大小,我们matplotlib自然是提供了一个很简单的方法来帮我们实现这个需求:

bars = axes.bar(x_bar, y_bar, color='blue', label=x_bar, width=2)  # 绘制柱形图
for i, rect in enumerate(bars):
    x_text = rect.get_x()  # 获取柱形图横坐标
    y_text = rect.get_height() + 0.01  # 获取柱子的高度并增加 0.01
    plt.text(x_text, y_text, '%.1f' % y_bar[i])  # 标注文字

PS: 文中说我们可以使用pylab来使用类似于matlab的接口,但是这个在我们matplotlib的official document中是discourage的,因为可能会造成namespace上的一些问题。