matplotlib入门及实践

原创 2018年04月16日 15:42:01

一直对matplotlib都是碰到哪个函数百度哪个,次数多了就有点烦,干脆列个知识清单系统地学习一下。

1.快速绘图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 1000)#在(0,10)均匀返回1000个点
y = np.sin(x)
z = np.cos(x**2)

plt.figure(figsize=(8,4))  #设置大小为800*400像素
plt.plot(x,y,label="sin(x)",color="red",linewidth=2)
plt.plot(x,z,"b--",label="cos(x^2)")
plt.xlabel("Time(s)")
plt.ylabel("Volt")
plt.title("PyPlot First Example")
plt.ylim(-1.2,1.2)  #y的绘图范围
plt.legend()  #显示图例,即显示label
plt.show()

plot()中有一个线型的参数

linesyle:'-'实线, '--'短线, '-.'短点相间线, ':'虚点线。



2.绘制多轴图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

plt.subplot(221) # 第一行的左图
plt.subplot(222) # 第一行的右图
plt.subplot(212) # 第二整行
plt.show()

subplot(numRows, numCols, plotNum)

subplot将整个绘图区域等分为numRows行 * numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。选择在plotNum处绘图。



3.绘制叠加图

除了绘制多轴图外,也可以在同一幅图里绘制多条曲线

t = np.arange(0., 5., 0.02)
y1=t
y2=t**2
y3=t**3
plt.plot(t, y1, 'r-', t, y2, 'b--', t, y3, 'g:')
plt.show()


4.绘制多样式图

首先给出一组数据

x = [1, 2, 3, 4, 5]
y = [2.3, 3.4, 1.2, 6.6, 7.0]

1)曲线图

即为第一部分的plot

2)散点图

plt.scatter(x, y, color='r', marker='+')
plt.show()

scatter()常用的color和marker见

https://blog.csdn.net/qiu931110/article/details/68130199


3)扇形图

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

labels='frogs','hogs','dogs','logs'
sizes=15,20,45,10
colors='yellowgreen','gold','lightskyblue','lightcoral'
explode=0,0.2,0,0
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)
plt.axis('equal')
plt.show()

其中explode是分离系数,默认为0,0.2即为0.2倍的半径长度

autopct='%1.1f%%'是指小数点后保留1位小数

shadow为True时有阴影,有立体效果,个人觉得更好看。

startangle即起始角度,参考系类似于二维坐标系,逆时针为正。


4)柱状图

plt.figure(figsize=(9,6))
n = 8
X = np.arange(n)+1
#X是1,2,3,4,5,6,7,8,柱的个数
# numpy.random.uniform(low=0.0, high=1.0, size=None), normal
#uniform均匀分布的随机数,normal是正态分布的随机数,0.5-1均匀分布的数,一共有n个
Y1 = np.random.uniform(0.5,1.0,n)
Y2 = np.random.uniform(0.5,1.0,n)
plt.bar(X,Y1,width = 0.35,facecolor = 'lightskyblue',edgecolor = 'white')
#width:柱的宽度
plt.bar(X+0.35,Y2,width = 0.35,facecolor = 'yellowgreen',edgecolor = 'white')
#水平柱状图plt.barh,属性中宽度width变成了高度height
#打两组数据时用+
#facecolor柱状图里填充的颜色
#edgecolor是边框的颜色
#想把一组数据打到下边,在数据前使用负号
#plt.bar(X, -Y2, width=width, facecolor='#ff9999', edgecolor='white')
#给图加text
for x,y in zip(X,Y1):
    plt.text(x, y, '%.2f' % y, ha='center', va= 'bottom')

for x,y in zip(X,Y2):
    plt.text(x+0.35, y, '%.2f' % y, ha='center', va= 'bottom')
plt.ylim(0,+1.25)
plt.show()


5.一些设置工具

1)plt.text()添加文字说明

  • text()可以在图中的任意位置添加文字,并支持LaTex语法
  • xlable(), ylable()用于添加x轴和y轴标签
  • title()用于添加图的题目

2)plt.axis()设置x,y轴范围

plt.axis([Xmin,Xmax,Ymin,Ymax])

3)plt.annotate()文本注释

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = plt.plot(t, s, lw=2)
plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.0),)#shrink为收缩指数
plt.ylim(-2,2)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Sample')
plt.show()



matplotlib函数库使用contour绘制等高线图形

#coding=utf-8 import numpy as np import matplotlib.pyplot as plt def height(x,y): return (1-x/2+...
  • qq_33506160
  • qq_33506160
  • 2017-11-05 18:01:22
  • 981

matplotlib学习—画等高线图

matplotlib学习记录:画简单的等高线图
  • Digitalmon
  • Digitalmon
  • 2017-06-25 10:51:41
  • 3952

matplotlib的基本用法(九)——绘制等高线图

matplotlib的基本用法(九)——绘制等高线图
  • Quincuntial
  • Quincuntial
  • 2017-05-02 21:44:52
  • 7090

Python可视化库matplotlib.pyplot里contour与contourf的区别

contour和contourf都是画三维等高线图的,不同点在于contourf会对等高线间的区域进行填充,区别如下: import numpy as np import matplotlib....
  • cymy001
  • cymy001
  • 2017-11-12 18:59:07
  • 2175

matplotlib绘图实例:pyplot、pylab模块及作图参数

http://blog.csdn.net/pipisorry/article/details/40005163 Matplotlib绘图实例(使用pyplot模块) matplotli...
  • pipisorry
  • pipisorry
  • 2014-10-12 00:47:09
  • 58277

Matplotlib 教程

始终 归档 分类 标签 札记 关于 Matplotlib 教程 发表于 2014 年 09 月 11 日   |   分类于 Algorithm and Computer S...
  • wg95272003
  • wg95272003
  • 2016-05-31 16:25:36
  • 1199

一份非常好的Matplotlib 教程

Matplotlib 教程 发表于 2014 年 09 月 11 日   |   分类于 Algorithm and Computer Science   |   本文共被围观 52922 ...
  • u011497262
  • u011497262
  • 2016-08-26 10:05:28
  • 52452

《python编程从入门到实践》15-10练习

练习使用本章介绍的两个库:尝试使用matplotlib通过可视化来模拟掷骰子的情况,并尝试使用Pygal通过可视化来模拟随机漫步的情况 下面仅列出相关程序,导入的类为书中所写的类 from die...
  • u013589337
  • u013589337
  • 2018-01-09 16:54:30
  • 571

matplotlib-随机漫步

random_walk.py# -*- coding: utf-8 -*- """ Created on Mon May 29 07:56:41 2017@author: Administrator ...
  • youhaibo1990
  • youhaibo1990
  • 2017-05-29 08:45:50
  • 382

Python中的Numpy、SciPy、MatPlotLib安装与配置

 Python安装完Numpy,SciPy和MatplotLib后,可以成为非常犀利的科研利器。网上关于这三个库的安装都写得非常不错,但是大部分人遇到的问题并不是如何安装,而是安装好后因为配...
  • u013248434
  • u013248434
  • 2017-04-18 12:03:04
  • 517
收藏助手
不良信息举报
您举报文章:matplotlib入门及实践
举报原因:
原因补充:

(最多只允许输入30个字)