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获取本地计算机名字的方法
Apr 29 Python
python 中split 和 strip的实例详解
Jul 12 Python
解析Python3中的Import
Oct 13 Python
Python hashlib加密模块常用方法解析
Dec 18 Python
Django 再谈一谈json序列化
Mar 16 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
python传到前端的数据,双引号被转义的问题
Apr 03 Python
基于python爬取梨视频实现过程解析
Nov 09 Python
Django通过设置CORS解决跨域问题
Nov 26 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
Python字典和列表性能之间的比较
Jun 07 Python
Python中re模块的元字符使用小结
Apr 07 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
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
js 中 document.createEvent的用法
2010/08/29 Javascript
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
JS实现多物体缓冲运动实例代码
2013/11/29 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
js中对函数设置默认参数值的3种方法
2015/10/23 Javascript
JavaScript中访问id对象 属性的方式访问属性(实例代码)
2016/10/28 Javascript
JavaScript实现获取用户单击body中所有A标签内容的方法
2017/06/05 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
2018/04/12 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
Python中返回字典键的值的values()方法使用
2015/05/22 Python
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
一个基于flask的web应用诞生 记录用户账户登录状态(6)
2017/04/11 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
pycharm+django创建一个搜索网页实例代码
2018/01/24 Python
python numpy元素的区间查找方法
2018/11/14 Python
在python中用print()输出多个格式化参数的方法
2019/07/16 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python 保存加载mat格式文件的示例代码
2020/08/04 Python
益达广告词
2014/03/14 职场文书
租房协议书范本
2014/04/09 职场文书
食品工程专业求职信
2014/06/15 职场文书
大学社团招新的通讯稿
2014/09/10 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
毕业实习感受与体会
2015/05/26 职场文书
北京青年观后感
2015/06/15 职场文书
红色革命电影观后感
2015/06/18 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL