1. # 导入相关模块
  2. import matplotlib.pyplot as plt
  3. import numpy as np

设置 figure

  Matplotlib 绘制的图形都在一个默认的 figure 中,我们可以自己创建 figure,可以控制更多的参数,常见的就是控制图形的大小

  1. plt.figure(figsize=(6, 3))
  2. plt.plot(x, y)
  3. plt.plot(x, y * 2)
  4. plt.show()

设置标题

  在当前图形中添加标题,可以指定标题的名称、位置、颜色、字体大小等

  1. plt.plot(x, y)
  2. plt.plot(x, y * 2)
  3. plt.title("sin(x) & 2sin(x)")
  4. plt.show()

设置坐标轴

  • 通过  xlim   和  ylim   来限定坐标轴的范围,只能确定一个数值区间
  • 通过 xlabel 和 ylabel 来设置坐标轴的名称
  • 通过 xticks 和 yticks  来设置坐标轴的刻度
  1. plt.plot(x, y)
  2. plt.plot(x, y * 2)
  3. plt.xlim((0, np.pi + 1))
  4. plt.ylim((-3, 3))
  5. plt.xlabel('X')
  6. plt.ylabel('Y')
  7. plt.show()

  1. plt.plot(x, y)
  2. plt.plot(x, y * 2)
  3. plt.xticks((0, np.pi * 0.5, np.pi, np.pi * 1.5, np.pi * 2))
  4. plt.show()

设置 label 和 legend

  为了区分出每个数据对应的图形名称

  1. plt.plot(x, y, label="sin(x)")
  2. plt.plot(x, y * 2, label="2sin(x)")
  3. # plt.legend(loc=1)
  4. plt.legend(loc='best')
  5. plt.show()

  图例的位置由 loc 关键字控制,其取值范围为 0-10,每个数字代表图表中的一处位置

添加注释

  有时候我们需要对特定的点进行标注,我们可以使用 plt.annotate 函数来实现
  这里我们要标注的点是 (x0, y0) = (π, 0) 
  我们也可以使用 plt.text 函数来添加注释

  1. plt.plot(x, y)
  2. x0 = np.pi
  3. y0 = 0
  4. # 画出标注点, s 代表点的大小
  5. plt.scatter(x0, y0, s=50)
  6. #添加文本
  7. plt.text(0, -0.25, "y = sin(x)", fontdict={'size': 16, 'color': 'r'})
  8. #添加注释
  9. plt.annotate('sin(np.pi)=%s' %y0, xy=(np.pi, 0), xycoords='data', xytext=(+30, -30),textcoords='offset points', fontsize=16,
  10. arrowprops=dict(arrowstyle='->', connectionstyle="arc3,rad=.2"))
  11. plt.show()

  对于 annotate 函数的参数,做一个简单解释:

  •   'sin(np.pi)=%s' % y0 :标注的内容,可以通过字符串 %s 将 y0 的值传入字符串
  •   xycoords='data' :基于数据的值来选位置
  •   xytext=(+30, -30) 和 textcoords='offset points' :对于标注位置的描述 和 xy 偏差 \值,即标注位置是   xy 位置向右移动 30,向下移动30;
  •   arrowprops :对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入。

使用子图

  有时候我们需要将多张子图展示在一起,可以使用 subplot() 实现。即在调用 plot() 函数之前需要先调用 subplot() 函数。该函数的第一个参数代表子图的总行数,第二个参数代表子图的 总列数,第三个参数代表活跃区域

  1. ax1 = plt.subplot(2, 2, 1) # (行,列,活跃区)
  2. plt.plot(x, np.sin(x), 'r')
  3. ax2 = plt.subplot(2, 2, 2, sharey=ax1) # 与 ax1 共享y轴
  4. plt.plot(x, 2 * np.sin(x), 'g')
  5. ax3 = plt.subplot(2, 2, 3)
  6. plt.plot(x, np.cos(x), 'b')
  7. ax4 = plt.subplot(2, 2, 4, sharey=ax3) # 与 ax3 共享y轴
  8. plt.plot(x, 2 * np.cos(x), 'y')
  9. plt.show()

  可以看到,上面的每个子图的大小都是一样的。有时候我们需要不同大小的子图。比如将上面第一 张子图完全放置在第一行,其他的子图都放在第二行。

  1. ax1 = plt.subplot(2,1,1)
  2. plt.plot(x,np.sin(x),'r')
  3. ax2 = plt.subplot(2,3,4)
  4. plt.plot(x,2*np.sin(x),'g')
  5. ax3 = plt.subplot(2,3,5,sharey=ax2)
  6. plt.plot(x,np.cos(x),'b')
  7. ax4 = plt.subplot(2,3,6,sharey=ax2)
  8. plt.plot(x,2*np.cos(x),'y')

  简单解释下, plt.subplot(2, 1, 1) 将图像窗口分为了 2 行 1 列, 当前活跃区为 1。
  使用 plt.subplot(2, 3, 4) 将整个图像窗口分为 2 行 3 列, 当前活跃区为 4。
  解释下为什么活跃区为 4,因为上一步中使用 plt.subplot(2, 1, 1) 将整个图像窗口分为 2 行 1 列, 第1个小图占用了第1个位置, 也就是整个第1行. 这一步中使用 plt.subplot(2, 3, 4) 将整个图 像窗口分为 2 行 3 列, 于是整个图像窗口的第1行就变成了3列, 也就是成了3个位置, 于是第2行的 第1个位置是整个图像窗口的第4个位置

中文乱码解决

  需要配置下后台字体:

  1. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
  2. plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

保存和显示图形

保存

  保存绘制的图片,可指定图片的分辨率、边缘的颜色等

  1. plt.savafig('存储文件名') # 记得加后缀,jpg/png 等

显示

  在本机显示图形

  1. plt.show

练习

画如下图形

  sin(x*i)    i = 0,...,4

  cos(x*i)     i = 0,...,4

  exp(x*i)/3  i = 0,...,4

  1. import matplotlib.pylab as plt
  2. import numpy as np
  3. plt.figure(figsize=(6,9))
  4. x = np.linspace(0, 3, 100)
  5. for i in range(5):
  6. plt.subplot(3,1,1)
  7. plt.plot(x,np.sin(x * i))
  8. plt.subplot(3,1,2)
  9. plt.plot(x,np.cos(x * i))
  10. plt.subplot(3,1,3)
  11. plt.plot(x,np.exp(x * i / 3))

Matplotlib 设置的更多相关文章

  1. matplotlib 设置图形大小时 figsize 与 dpi 的关系

    matplotlib 中设置图形大小的语句如下: fig = plt.figure(figsize=(a, b), dpi=dpi) 其中: figsize 设置图形的大小,a 为图形的宽, b 为图 ...

  2. matplotlib设置颜色、标记、线条,让你的图像更加丰富

    今天是数据处理专题的第11篇文章,我们继续来介绍matplotlib这个包的使用方法. 在上一篇文章当中我们介绍了matplotlib当中subplot的概念以及用法,今天我们将会来介绍matplot ...

  3. matplotlib 设置标题 xy标题等

    import matplotlib.pyplot as plt import matplotlib as mpl baseclass=[1,2,3,4] name = ['class1','class ...

  4. matplotlib设置中文标签

    import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei']

  5. 自定义 matplotlib 设置

    Customizing plots with style sheets import matplotlib as mpl 查看配置文件所在的目录:mpl.get_configdir() 1. 自定义 ...

  6. python matplotlib 设置x轴文本间隔显示(数字的话可以转为字符之后处理)

    一个国际友人绘图遇到的问题,查了一手资料.主要参考的是这个老哥的做法(https://blog.csdn.net/wyquin/article/details/80508260) #totalSeed ...

  7. matplotlib 可视化 —— cmap(colormap)

    color example code: colormaps_reference.py - Matplotlib 2.0.0 documentation 由其文档可知,在 colormap 类别上,有如 ...

  8. 数据分析之matplotlib使用

    绘制折线图 参数详情 from matplotlib import pyplot as plt # 设置图片大小,dpi图片放大缩小时可以让其更清晰 plt.figure(figsize=(20,8) ...

  9. matplotlib学习日记(二)----图表组成练习

    ''' 将前面的知识进行练习 plot,scatter,legend等 ''' import matplotlib.pyplot as plt import numpy as np from matp ...

随机推荐

  1. ORM查询2

    目录 十三式 2式(针对外键查询优化) select_related和prefetch_related prefetch_related 查询返回值类型 不等式查询 关键字查询 时间查询 跨表查询 组 ...

  2. ES6 —— entries(),keys()和values()

    ES6 提供三个新的方法 —— entries(),keys()和values() —— 用于遍历数组.它们都返回一个遍历器对象,可以用for...of循环进行遍历,唯一的区别是keys()是对键名的 ...

  3. java动手动脑和动手实验

    动手动脑一: EnumTest.java: 程序代码: public class EnumTest { public static void main(String[] args) { Size s= ...

  4. LeetCode_155-Min Stack

    栈的实现,多加了一个最小值的获取 class MinStack { public: struct Node { int nNum; int nMinNum; Node* pNext; Node() { ...

  5. ubuntu使用uwsgi+nginx部署django

    ls -lha export WORKON_HOME=~/venv source /usr/local/bin/vitualenvwrapper.sh VIRTUALENVWRAPPER_PYTHON ...

  6. JavaScript ES6函数式编程(一):闭包与高阶函数

    函数式编程的历史 函数的第一原则是要小,第二原则则是要更小 -- ROBERT C. MARTIN 解释一下上面那句话,就是我们常说的一个函数只做一件事,比如:将字符串首字母和尾字母都改成大写,我们此 ...

  7. redis数据库的使用

    一.安装redis与可视化操作工具 可视化工具:RedisDesktopManager redis载地址:https://github.com/MSOpenTech/redis/releases. 二 ...

  8. Java编程思想——第17章 容器深入研究 读书笔记(一)

    这一章将学习散列机制是如何工作的,以及在使用散列容器时怎么样编写hashCode()和equals()方法. 一.容器分类 先上两张图 来概况完整的容器分类 再细说都为什么会有那些特性. 二.填充容器 ...

  9. std::tuple

    tuple,元组类型.头文件<tuple>,tuple是一个固定大小的不同类型(异质,heterogeneous)值的集合(这一点是tuple与其他常规STL容器的最大不同,即它可以同时存 ...

  10. ArcGIS Engine简单图形绘制功能的实现(点、线、面)

    我们添加点.线.面来实现图形的编辑需要使用Geometry对象类. Point(点) 是一个0维的几何图形,具有X.Y坐标值,以及可选的属性,如高程值(Z值).度量值(M值).ID值等,可用于描述需要 ...