众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象。而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用它我们可以仅仅使用几行代码就生成 饼图、直方图、功率谱、条形图、错误图、散点图、气泡图,甚至生成动态图型也都很轻松。而且它的绘图方法丰富,可以在各种交互式环境中运行,且生成的图像质量高、兼容各种硬拷贝格式。

matplotlib的官网地址是https://matplotlib.org/index.html,下面这些是他们官网的一些示例图形。

pip安装

Matplotlib的安装比较容易,可以直接通过pip安装,也可以通过下载安装包的方式安装。博主使用的是python3,相关的安装命令如下:

pip install matplotlib

Matplotlib是整个包,matplotlib.pyplot是Matplotlib中的一个模块。对于pyplot模块中的功能,始终存在“当前”图形和轴(根据请求自动创建)。例如,在下面的例子中,在第一次调用plt.plot创建轴,则后续调用plt.plot在同一坐标添加额外的线,以及 plt.xlabelplt.ylabelplt.titleplt.legend设置轴标签和标题和添加的图例。pylab是一个便利模块,可以 在单个命名空间中批量导入 matplotlib.pyplot(用于绘图)和numpy(用于数学和使用数组)。不推荐使用pylab,并且由于命名空间污染而强烈建议不要使用它。请改用pyplot。对于非交互式绘图,建议使用pyplot创建图形,然后使用OO界面进行绘图。pyplot是matplotlib的一个模块,pylab是与matplotlib共同安装的模块。

matplotlib的用户指南分为三个等级:入门,中级,高级。在入门级,主要介绍下图内容

这里我首先介绍 使用指南 部分,即 Usage Guide

1.一张图的组成

在使用matplotlib画图时,你会发现各种参数,下面就说说这些参数具体设置什么

简单绘图

import matplotlib.pyplot as plt
import numpy as np x = np.linspace(0, 2, 100) plt.plot(x, x, label='linear')
plt.plot(x, x**2, label='quadratic')
plt.plot(x, x**3, label='cubic') plt.xlabel('x label')
plt.ylabel('y label') plt.title("Simple Plot") plt.legend() plt.show()

  

sinx 函数

import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 10, 0.2)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
plt.title("Sin(x)")
plt.show()

  

自定义画图函数

import matplotlib.pyplot as plt
import numpy as np def my_plotter(ax, data1, data2, param_dict):
"""
A helper function to make a graph Parameters
----------
ax : Axes
The axes to draw to data1 : array
The x data data2 : array
The y data param_dict : dict
Dictionary of kwargs to pass to ax.plot Returns
-------
out : list
list of artists added
"""
out = ax.plot(data1, data2, **param_dict)
return out # which you would then use as: data1, data2, data3, data4 = np.random.randn(4, 100)
fig, ax = plt.subplots(1, 1)
my_plotter(ax, data1, data2, {'marker': 'x'}) plt.show()

  

生成2个子图

fig, (ax1, ax2) = plt.subplots(1, 2)
my_plotter(ax1, data1, data2, {'marker': 'x'})
my_plotter(ax2, data3, data4, {'marker': 'o'})

  

交互模式

交互模式也可以通过matplotlib.pyplot.ion(),然后关闭通过打开matplotlib.pyplot.ioff()

#交互式示例
import matplotlib.pyplot as plt
plt.ion()
plt.plot([1.6, 2.7]) plt.title("interactive test")
plt.xlabel("index") ax = plt.gca()
ax.plot([3.1, 2.2]) #旧版本调用draw()显示图象
plt.draw()

  

#非交互式示例
import numpy as np
import matplotlib.pyplot as plt plt.ioff()
for i in range(3):
plt.plot(np.random.rand(10))
plt.show()

  

在交互模式下,pyplot功能会自动绘制到屏幕上。

以交互方式绘制时,如果除了pyplot函数之外还使用对象方法调用,则draw()只要您想刷新绘图,就会调用。

在要生成一个或多个图形的脚本中使用非交互模式,并在结束或生成一组新图形之前显示它们。在这种情况下,用于 show()显示图形并阻止执行,直到您手动销毁它们。

小白学Python——Matplotlib 学习(1)的更多相关文章

  1. 小白学Python——Matplotlib 学习(2):pyplot 画图

    matplotlib.pyplot是一组命令样式函数,使matplotlib像MATLAB一样工作.每个pyplot函数都会对图形进行一些更改:例如,创建图形,在图形中创建绘图区域,在绘图区域中绘制一 ...

  2. 小白学Python——Matplotlib 学习(3) 函数图形

    import matplotlib.pyplot as plt import numpy as np x = np.linspace(-1,1,50) y = 2*x + 1 plt.figure() ...

  3. 小白学 Python 数据分析(16):Matplotlib(一)坐标系

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  4. 小白学 Python 数据分析(17):Matplotlib(二)基础操作

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  5. 小白学 Python 数据分析(18):Matplotlib(三)常用图表(上)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  6. 小白学 Python 数据分析(19):Matplotlib(四)常用图表(下)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  7. 小白学 Python 数据分析(15):数据可视化概述

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  8. 小白学 Python 数据分析(20):pyecharts 概述

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

  9. 小白学 Python 数据分析(21):pyecharts 好玩的图表(系列终篇)

    人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...

随机推荐

  1. ssh复制公钥成功后仍需输入密码

    1,网上说权限问题 登录流程: 被登录机器的文件权限: //用户权限 chmod 700 /home/username //.ssh文件夹权限 chmod 700 ~/.ssh/ // ~/.ssh/ ...

  2. jquery header选择器 语法

    jquery header选择器 语法 作用::header 选择器选取所有标题元素(h1 - h6).广州大理石机械构件 语法:$(":header") jquery heade ...

  3. 【java工具类】生成Zip压缩包

    多文件生成压缩包,返回压缩包生成位置的路径. FileUtil.java /** * 文件打压缩包 * @param files * @param Name * @return * @throws E ...

  4. luogu 4927 [1007]梦美与线段树 概率与期望 + 线段树

    考场上切了不考虑没有逆元的情况(出题人真良心). 把概率都乘到一起后发现求的就是线段树上每个节点保存的权值和的平方的和. 这个的修改和查询都可以通过打标记来实现. 考场代码: #include < ...

  5. 记一次创建svc代理失败

    在看尚硅谷的k8s视频中,学到ingress代理的时候,由于之前按照视频安装了V1.15.1,后面环境又出了问题,重新安装了 16.1的,为这次失败埋下了伏笔. 教案中的yaml apiVersion ...

  6. 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,对象无效。不允许有扩展属性,或对象不存在。

    不知道网上为啥有那么多复制粘贴的文章,写点原创不好吗?堂而皇之的贴别人的文章有意思吗? 消息 15135,级别 16,状态 8,过程 sp_addextendedproperty,对象无效.不允许有扩 ...

  7. [CSP-S模拟测试]:椎(线段树维护区间最值和单调栈)

    题目描述 虽不能至,心向往之. $Treap=Tree+Heap$ 椎$=$树$+$堆 小$\pi$学习了计算机科学中的数据结构$Treap$. 小$\pi$知道$Treap$指的是一种树. 小$\p ...

  8. 多线程之Tread类和Runnable的区别

    一.run()方法和start()方法的区别 在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继 ...

  9. 后盾网lavarel视频项目---2、phpstorm显示类中的方法快捷键

    后盾网lavarel视频项目---2.phpstorm显示类中的方法快捷键 一.总结 一句话总结: ctrl + f12 1.npm安装js插件? npm install hdjs 2.phpstor ...

  10. mysql命令使用2

    mysql查询默认不区分大小写,如果需要区分大小写,使用binary mysql>select * from teacher where binary name='niu'; mysql查询默认 ...