python matplotlib画图实例代码分享


Posted in Python onDecember 27, 2017

python的matplotlib包支持我们画图,有点非常多,现学习如下。

首先要导入包,在以后的示例中默认已经导入这两个包

import matplotlib.pyplot as plt 
import numpy as np

然后画一个最基本的图

t = np.arange(0.0, 2.0, 0.01)#x轴上的点,0到2之间以0.01为间隔 
s = np.sin(2*np.pi*t)#y轴为正弦 
plt.plot(t, s)#画图 
 
plt.xlabel('time (s)')#x轴标签 
plt.ylabel('voltage (mV)')#y轴标签 
plt.title('About as simple as it gets, folks')#图的标签 
plt.grid(True)#产生网格 
plt.savefig("test.png")#保存图像 
plt.show()#显示图像

这是在一个窗口中画单张图的过程,那么如何画多张图呢?画图的过程相同,无非是画多张,然后设定位置。

x1 = np.linspace(0.0, 5.0)#画图一 
x2 = np.linspace(0.0, 2.0)#画图二 
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1) 
y2 = np.cos(2 * np.pi * x2) 
 
plt.subplot(2, 1, 1)#面板设置成2行1列,并取第一个(顺时针编号) 
plt.plot(x1, y1, 'yo-')#画图,染色 
plt.title('A tale of 2 subplots') 
plt.ylabel('Damped oscillation') 
 
plt.subplot(2, 1, 2)#面板设置成2行1列,并取第二个(顺时针编号) 
plt.plot(x2, y2, 'r.-')#画图,染色 
plt.xlabel('time (s)') 
plt.ylabel('Undamped') 
 
plt.show()

两张图的示例如下

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

直方图的画法

# -*- coding:utf-8 -*- 
import numpy as np 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 
 
mu = 100 # 正态分布的均值 
sigma = 15 # 标准差 
x = mu + sigma * np.random.randn(10000)#在均值周围产生符合正态分布的x值 
 
num_bins = 50 
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='green', alpha=0.5) 
#直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.5.返回n个概率,直方块左边线的x值,及各个方块对象 
y = mlab.normpdf(bins, mu, sigma)#画一条逼近的曲线 
plt.plot(bins, y, 'r--') 
plt.xlabel('Smarts') 
plt.ylabel('Probability') 
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')#中文标题 u'xxx' 
 
plt.subplots_adjust(left=0.15)#左边距 
plt.show()

直方图如下

python matplotlib画图实例代码分享

3D图像的画法

3D离散点

#!/usr/bin/env python 
# encoding: utf-8 
 
import matplotlib.pyplot as plt 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
 
x_list = [[3,3,2],[4,3,1],[1,2,3],[1,1,2],[2,1,2]] 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
for x in x_list: 
  ax.scatter(x[0],x[1],x[2],c='r') 
plt.show()

画空间平面

from mpl_toolkits.mplot3d.axes3d import Axes3D 
from matplotlib import cm 
import matplotlib.pyplot as plt 
import numpy as np 
  
fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1, projection='3d') 
X=np.arange(1,10,1) 
Y=np.arange(1,10,1) 
X, Y = np.meshgrid(X, Y) 
Z = 3*X+2*Y+30 
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=cm.jet,linewidth=0, antialiased=True) 
ax.set_zlim3d(0,100) 
fig.colorbar(surf, shrink=0.5, aspect=5) 
plt.show()

画空间曲面

from mpl_toolkits.mplot3d import Axes3D 
from matplotlib import cm 
from matplotlib.ticker import LinearLocator, FormatStrFormatter 
import matplotlib.pyplot as plt 
import numpy as np 
 
fig = plt.figure() 
ax = fig.gca(projection='3d') 
X = np.arange(-5, 5, 0.1) 
Y = np.arange(-5, 5, 0.1) 
X, Y = np.meshgrid(X, Y) 
R = np.sqrt(X**2 + Y**2) 
Z = np.sin(R) 
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False) 
#画表面,x,y,z坐标, 横向步长,纵向步长,颜色,线宽,是否渐变 
ax.set_zlim(-1.01, 1.01)#坐标系的下边界和上边界 
 
ax.zaxis.set_major_locator(LinearLocator(10))#设置Z轴标度 
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))#Z轴精度 
fig.colorbar(surf, shrink=0.5, aspect=5)#shrink颜色条伸缩比例(0-1),aspect颜色条宽度(反比例,数值越大宽度越窄) 
 
plt.show()

3D图分别如下

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

饼状图画法

# -*- coding: utf-8 -*- 
import matplotlib.pyplot as plt 
 
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'#设置标签 
sizes = [15, 30, 45, 10]#占比,和为100 
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']#颜色 
explode = (0, 0.1, 0, 0) #展开第二个扇形,即Hogs,间距为0.1 
 
plt.pie(sizes, explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=90)#startangle控制饼状图的旋转方向 
plt.axis('equal')#保证饼状图是正圆,否则会有一点角度偏斜 
 
fig = plt.figure() 
ax = fig.gca() 
 
import numpy as np 
 
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors,autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(0, 0), frame=True) 
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(1, 1), frame=True) 
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90, radius=0.25, center=(0, 1), frame=True) 
ax.pie(np.random.random(4), explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=90,radius=0.25, center=(1, 0), frame=True) 
 
ax.set_xticks([0, 1])#设置位置 
ax.set_yticks([0, 1]) 
ax.set_xticklabels(["Sunny", "Cloudy"])#设置标签 
ax.set_yticklabels(["Dry", "Rainy"]) 
ax.set_xlim((-0.5, 1.5)) 
ax.set_ylim((-0.5, 1.5)) 
 
ax.set_aspect('equal') 
plt.show()

饼状图如下:

python matplotlib画图实例代码分享

python matplotlib画图实例代码分享

平时用到的也就这几种,掌握这几种就差不多了,更多内容见

https://matplotlib.org/users/screenshots.html

总结

以上就是本文关于python matplotlib画图实例代码分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python操作日期和时间的方法
Mar 11 Python
Python提示[Errno 32]Broken pipe导致线程crash错误解决方法
Nov 19 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
Python实现将Excel转换成xml的方法示例
Aug 25 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
简单了解django索引的相关知识
Jul 17 Python
Django单元测试工具test client使用详解
Aug 02 Python
python的slice notation的特殊用法详解
Dec 27 Python
关于python pycharm中输出的内容不全的解决办法
Jan 10 Python
基于python实现破解滑动验证码过程解析
May 28 Python
python动态规划算法实例详解
Nov 22 Python
Python集合的基础操作
Nov 01 Python
python爬虫使用cookie登录详解
Dec 27 #Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 #Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 #Python
利用 python 对目录下的文件进行过滤删除
Dec 27 #Python
python中使用%与.format格式化文本方法解析
Dec 27 #Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 #Python
python中的迭代和可迭代对象代码示例
Dec 27 #Python
You might like
thinkPHP实现表单自动验证
2014/12/24 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
2010/06/29 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
JavaScript中创建对象和继承示例解读
2014/02/12 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
highcharts 在angular中的使用示例代码
2017/09/20 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
javascript中toFixed()四舍五入使用方法详解
2018/09/28 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
Vue使用鼠标在Canvas上绘制矩形
2020/12/24 Vue.js
python生成随机密码或随机字符串的方法
2015/07/03 Python
常用python编程模板汇总
2016/02/12 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python实现汉诺塔算法
2021/03/01 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
让IE6、IE7、IE8支持CSS3的脚本
2010/07/20 HTML / CSS
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
员工离职感谢信
2015/01/22 职场文书
总经理助理岗位职责
2015/01/31 职场文书
离婚起诉书范文2015
2015/05/19 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
Python中文分词库jieba(结巴分词)详细使用介绍
2022/04/07 Python
Python Matplotlib绘制两个Y轴图像
2022/04/13 Python
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL