matplotlib是python里用于绘图的专用包,功能十分强大。下面介绍一些最基本的用法:

一、最基本的划线

先来一个简单的示例,代码如下,已经加了注释:

import matplotlib.pyplot as plt
import numpy as np # 先获取一个图表
plt.figure() # 设置图表的标题
plt.title("sale report") # 设置y轴的label标签
plt.ylabel("amount") # 设置x轴的label标签
plt.xlabel("month") # 模拟一些(X,Y)坐标数据(注:习惯上用大写表示矩阵)
X = np.arange(0, 13)
Y = np.array([100, 200, 200, 300, 400, 600, 500, 550, 600, 700, 800, 750, 800]) # 将x轴的刻度范围限制为-0.5~12.2
plt.xlim(-0.5, 12.2) # 将y轴的刻度范围限制为0~1000
plt.ylim(0, 1000) # 将(X,Y)坐标用red红色画线
plt.plot(X, Y, 'r') # X坐标也可以省略,只要Y轴的坐标值即可,--表示是虚线
plt.plot(Y + 50, '--') # g+表示green绿色,画图的样式为+号
plt.plot(Y - 50, 'g+') # 同时划二条线,第1个是yellow黄色,第2个是magenta色,另外还设置了样式1
plt.plot(Y - 100, 'y', Y - 150, 'm1') # 渲染出来
plt.show()

注:plt中有很多缩写,比如r代表red,y代表yellow,xlim即x-axis-limit(x轴的限制),另外g+,表示颜色是green,而后面的+号表示划线的样式。从源码中可以找到更多的缩写说明。 matplotlib/axes/_axes.py 在这个文件中,plot方法的注释里有相关描述:

 The following format string characters are accepted to control
the line style or marker: ================ ===============================
character description
================ ===============================
``'-'`` solid line style
``'--'`` dashed line style
``'-.'`` dash-dot line style
``':'`` dotted line style
``'.'`` point marker
``','`` pixel marker
``'o'`` circle marker
``'v'`` triangle_down marker
``'^'`` triangle_up marker
``'<'`` triangle_left marker
``'>'`` triangle_right marker
``'1'`` tri_down marker
``'2'`` tri_up marker
``'3'`` tri_left marker
``'4'`` tri_right marker
``'s'`` square marker
``'p'`` pentagon marker
``'*'`` star marker
``'h'`` hexagon1 marker
``'H'`` hexagon2 marker
``'+'`` plus marker
``'x'`` x marker
``'D'`` diamond marker
``'d'`` thin_diamond marker
``'|'`` vline marker
``'_'`` hline marker
================ =============================== The following color abbreviations are supported: ========== ========
character color
========== ========
'b' blue
'g' green
'r' red
'c' cyan
'm' magenta
'y' yellow
'k' black
'w' white
========== ========

二、绘制数学函数

下面是抛物线、直线、三角函数的演示:

import matplotlib.pyplot as plt
import numpy as np # 先获取一个图表
fig = plt.figure() # 抛物线
X1 = np.linspace(-5, 5, 50) # -5 ~ 5 之间生成50个点
Y1 = X1 ** 2 + 5
plt.plot(X1, Y1, 'r')
# plt.plot(X1, Y1, color='red', label='parabola') # 三角函数
X2 = np.linspace(np.pi, 5 * np.pi, 50) # 在pi ~ 5pi之间生成50个点
Y2 = 6 * np.cos(X2)
plt.plot(X2, Y2, 'y')
# plt.plot(X2, Y2, color='y', label='cosine') # 直线
X3 = np.linspace(-4, 6, 20)
Y3 = 3 * X3 + 10
plt.plot(X3, Y3, 'g--')
# plt.plot(X3, Y3, color='green', linestyle='--', label='line') # 显示图例说明
# plt.legend() # 渲染出来
plt.show()

注意:代码中有一些行被注释掉了,比如:plt.plot(X1, Y1, color='red', label='parabola') ,这其实是 plt.plot(X1, Y1, 'r') 的完整写法,其中label只有完整写法中才能指定。换成完整写法后,同时把plt.legend() 前面的注释去掉,再次运行图上就会显示出所谓的"图例"

三、坐标轴控制、文本注解显示

先看效果图:

代码如下:

# coding:utf8

import matplotlib.pyplot as plt
import numpy as np # 先获取一个图表
fig = plt.figure() # 设置x,y坐标轴的刻度显示范围
plt.xlim(-7, 7)
plt.ylim(0, 7) # 抛物线
X1 = np.linspace(-5, 5, 50) # -5 ~ 5 之间生成50个点
Y1 = 0.25 * X1 ** 2
plt.plot(X1, Y1, color='red', label=r'$y=\frac{x^2}{4}$') # 直线
X2 = np.linspace(-5, 5, 50)
Y2 = X2
plt.plot(X2, Y2, color='green', linestyle='--', label=r'$y=x$') # 黑色辅助线
plt.plot([4, 4], [4, 0], "k--")
# 抛物线与直线的交点处,标记1个黑点
plt.plot([4, 4], [4, 4], 'ko') # 交点处的文本(annotate方式)
plt.annotate(r'$y=\frac{4^2}{4}=4$',
xy=(4, 4),
xycoords='data',
xytext=(+10, -30),
textcoords='offset points',
fontsize=12,
color="red",
arrowprops=dict(arrowstyle="->",
color="red",
connectionstyle="arc3,rad=.5"))
# text方式的文本
plt.text(5.2, 6.1, r'$y=\frac{x^2}{4}$', fontdict={'size': 16, 'color': 'r'})
plt.text(5.2, 5.1, r'$y=x$', fontdict={'size': 16, 'color': 'g'}) # 获取当前坐标轴gca即get current axis
ax = plt.gca() # 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none') # 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0)) # 调整x轴刻度(从-5到+5,正好11个点)
plt.xticks(np.linspace(-5, 5, 11))
# 调整y轴刻度
plt.yticks(np.linspace(1, 6, 6)) # 给坐标轴加箭头
plt.arrow(0, 7, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.arrow(7, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2) # 显示图例说明
plt.legend() # 显示
plt.show()

  

三、散点图

# coding:utf8

import matplotlib.pyplot as plt

# 先获取一个图表
fig = plt.figure() # 设置x,y坐标轴的刻度显示范围
plt.xlim(-5, 20)
plt.ylim(-5, 30) # 画散点图
X1 = [0, 10]
Y1 = [10, 20]
# c即color , s即scale
plt.scatter(X1, Y1, c='r', s=80, label='scatter 1')
plt.scatter([10, 15], [5, 10], c='g', label='scatter 2') # 显示网格
plt.grid(True, alpha=0.3) # 加上坐标说明
plt.text(0.5, 10.5, r'$(0,10)$')
plt.text(10.5, 20.5, r'$(10,20)$')
plt.text(10.5, 5.5, r'$(10,5)$')
plt.text(15.5, 10.5, r'$(15,10)$') # 显示图例说明
plt.legend() # 显示
plt.show()

 

参考文章:

1、Matplotlib tutorial

2、Matplotlib tutorial (中文翻译)

3、Matplotlib Gallery (官网)

4、基于官方教程的matplotlib简介

5、官网pyplot教程

6、莫烦的视频

7、matplotlib常用公式

Matplotlib新手上路(上)的更多相关文章

  1. Matplotlib新手上路(下)

    接上篇继续,这次来演示下如何做动画,以及加载图片 一.动画图 import numpy as np import matplotlib.pyplot as plt import matplotlib. ...

  2. Matplotlib新手上路(中)

    接上回继续 一.多张图布局(subplot) 1.1 subplot布局方式 import matplotlib.pyplot as plt plt.figure() plt.subplot(3, 2 ...

  3. OpenGL教程之新手上路

    Jeff Molofee(NeHe)的OpenGL教程- 新手上路 译者的话:NeHe的教程一共同拥有30多课,内容翔实,而且不断更新 .国内的站点实在应该向他们学习.令人吃惊的是,NeHe提供的例程 ...

  4. webpack4配置详解之新手上路初探

    前言 经常会有群友问起webpack.react.redux.甚至create-react-app配置等等方面的问题,有些是我也不懂的,慢慢从大家的相互交流中,也学到了不少. ​ 今天就尝试着一起来聊 ...

  5. 转-spring-boot 注解配置mybatis+druid(新手上路)-http://blog.csdn.net/sinat_36203615/article/details/53759935

    spring-boot 注解配置mybatis+druid(新手上路) 转载 2016年12月20日 10:17:17 标签: sprinb-boot / mybatis / druid 10475 ...

  6. 活字格企业 Web 应用生成器新手上路指南

    活字格是一款企业 Web 应用生成器,使用了类 Excel 的设计界面,通过简单的拖拽操作,就能快速制作出一个 Web 信息管理系统.在整个使用过程中无需专业软件知识,没有任何技术门槛,能轻松实现各行 ...

  7. Ocelot 新手上路

    新手上路,老司机请多多包含!Ocelot 在博园里文章特别多,但是按照其中一篇文章教程,如果经验很少或者小白,是没法将程序跑向博主的结果. 因此总结下     参考多篇文章,终于达到预期效果. Oce ...

  8. 新手上路——it人如何保持竞争力

    新手上路——如何保持竞争力 JINGZHENGLI 套用葛大爷的一句名言:21世纪什么最贵,人才.哪你是人才还是人材?还是人财或人裁?相信大家都不是最后一种.何如保持住这个光环呢?就需要我们保持我们独 ...

  9. FreeSql 新手上路系列教程已发布在 cnblogs

    FreeSql 是一个功能强大的对象关系映射程序(O/RM),支持 .NETCore 2.1+ 或 .NETFramework 4.5+(QQ群:4336577) FreeSql采用MIT开源协议托管 ...

随机推荐

  1. Linux中断处理(二)

    与Linux设备驱动中中断处理相关的首先是申请与释放IRQ的API request_irq()和free_irq(),request_irq()的原型为:int request_irq(unsigne ...

  2. GO-time.after 用法

    初学GO,time包里sleep是最常用,今天突然看到一个time.after,特记录time.after用法笔记如下: 首先是time包里的定义 // After waits for the dur ...

  3. ExtJs常用布局--layout详解(含实例)

    序言: 笔者用的ExtJs版本:ext-3.2.0 ExtJs常见的布局方式有:border.form.absolute.column.accordion.table.fit.card.anchor ...

  4. LeetCode(56):合并区间

    Medium! 题目描述: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18] ...

  5. tensorflow-安装

    1.pip安装(最好在虚拟环境中安装) →更新pip:pip install --upgrade pip →安装最新版tensorflow(GPU):pip install tensorflow-gp ...

  6. js----DOM对象(3

    表格示例(取消,全选,反选): <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  7. 《LINQ技术详解C#》-5.非延迟操作符

    1.转换操作符 1.ToArray 从一个类型为T的输入序列创建一个类型为T的数组. 2.ToList 从一个类型为T的序列创建一个类型为T的列表. 3.ToDictionary 从类型为T的序列创建 ...

  8. POJ1151Atlantis 矩形面积并 扫描线 线段树

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1151 题意概括 给出n个矩形,求他们的面积并. n<=100 题解 数据范围极小. 我们分3种 ...

  9. SqlServer 添加用户 添加角色 分配权限

    转载自:https://www.cnblogs.com/accumulater/p/6158387.html   --创建一个简单的登录,登录名为:newlogin:登录密码:123456:默认数据库 ...

  10. POJ1962:Corporative Network【带权并查集】

    <题目链接> 题目大意: n个节点,若干次询问,I x y表示从x连一条边到y,权值为|x-y|%1000:E x表示询问x到x所指向的终点的距离.   解题分析: 与普通的带权并查集类似 ...