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获取Linux系统的各种信息
Jul 10 Python
关于Python数据结构中字典的心得
Dec 04 Python
python+tkinter编写电脑桌面放大镜程序实例代码
Jan 16 Python
Python之reload流程实例代码解析
Jan 29 Python
使用python实现BLAST
Feb 12 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
在python中利用opencv简单做图片比对的方法
Jan 24 Python
Python实战购物车项目的实现参考
Feb 20 Python
Python字符串的一些操作方法总结
Jun 10 Python
详解Python是如何实现issubclass的
Jul 24 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
4种方法python批量修改替换列表中元素
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
php对数组排序的简单实例
2013/12/25 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
CakePHP框架Model函数定义方法示例
2017/08/04 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
2012/03/15 Javascript
js判断浏览器类型的方法
2013/08/07 Javascript
Express.JS使用详解
2014/07/17 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
JS实现带圆弧背景渐变效果的导航菜单代码
2015/10/13 Javascript
Javascript复制实例详解
2016/01/28 Javascript
TypeOf这些知识点你了解吗
2016/02/21 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
微信小程序中换行空格(多个空格)写法详解
2018/07/10 Javascript
vue实现与安卓、IOS交互的方法
2018/11/02 Javascript
Node.js Event Loop各阶段讲解
2019/03/08 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
详解vue3.0 的 Composition API 的一种使用方法
2020/10/26 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python序列操作之进阶篇
2016/12/08 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
2017/12/12 Python
解决Python3 抓取微信账单信息问题
2019/07/19 Python
python字典的常用方法总结
2019/07/31 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
2021/01/08 Python
墨尔本照明批发商店:Mica Lighting
2017/12/28 全球购物
网络技术支持面试题
2013/04/22 面试题
法律专业实习鉴定
2013/12/22 职场文书
中级会计职业生涯规划范文
2014/01/16 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
导游词之安徽巢湖
2019/12/26 职场文书
Android自定义ScrollView实现阻尼回弹
2022/04/01 Java/Android
Golang 结构体数据集合
2022/04/22 Golang