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发送email的3种方法
Apr 28 Python
Python版微信红包分配算法
May 04 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
python打开windows应用程序的实例
Jun 28 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Pycharm 2019 破解激活方法图文详解
Oct 11 Python
如何基于python生成list的所有的子集
Nov 11 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
python压包的概念及实例详解
Feb 17 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
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
2009/04/01 Javascript
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
js创建子窗口并且回传值示例代码
2013/07/02 Javascript
js 剪切板的用法(clipboardData.setData)与js match函数介绍
2013/11/19 Javascript
javascript生成json数据简单示例分享
2014/02/14 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python异步存储数据详解
2019/03/19 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
探索HTML5本地存储功能运用技巧
2016/03/02 HTML / CSS
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
团日活动总结
2014/04/28 职场文书
2014年向国旗敬礼活动总结
2014/09/27 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
遗失说明具结保证书
2015/02/26 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
python异步的ASGI与Fast Api实现
2021/07/16 Python
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server