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实现根据图标提取分类应用程序实例
Sep 28 Python
Python中的装饰器用法详解
Jan 14 Python
给Python初学者的一些编程技巧
Apr 03 Python
Python深度优先算法生成迷宫
Jan 22 Python
Django基于ORM操作数据库的方法详解
Mar 27 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
django开发post接口简单案例,获取参数值的方法
Dec 11 Python
python psutil模块使用方法解析
Aug 01 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 Python
python利用文件时间批量重命名照片和视频
Feb 09 Python
Python OpenGL基本配置方式
May 20 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
windows7下php开发环境搭建图文教程
2015/01/06 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
php文档工具PHP Documentor安装与使用方法
2016/01/25 PHP
取得一定长度的内容,处理中文
2006/12/20 Javascript
个人总结的一些关于String、Function、Array的属性和用法
2007/01/10 Javascript
用javascript实现的支持lrc歌词的播放器
2007/05/17 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
js canvas实现QQ拨打电话特效
2017/05/10 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
react router 4.0以上的路由应用详解
2017/09/21 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
jQuery获取随机颜色的实例代码
2018/05/21 jQuery
javascript数组的定义及操作实例
2019/11/10 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python计算导数并绘图的实例
2020/02/29 Python
Python 通过正则表达式快速获取电影的下载地址
2020/08/17 Python
资产经营总监岗位职责
2013/12/04 职场文书
工伤事故赔偿协议书
2014/04/15 职场文书
特教教师先进事迹
2014/05/21 职场文书
2014年中职班主任工作总结
2014/12/16 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
联谊会开场白
2015/06/01 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书