Matplotlib 练习题
1. 绘制一个二维随机漫步的图形
直接上代码:
%pylab inline
nsteps = 1000
draws = np.random.randint(-1,2,size=(2,nsteps))
walks = draws.cumsum(1)
plot(walks[0,:],walks[1,:]);
Populating the interactive namespace from numpy and matplotlib

先生成 1000 个随机漫步方向,方向是从 {-1, 0, 1} 中随机挑两个值(两个值也可相等)作为移动方向,所以每次移动有 3×3=9 种选择,初始位置也是 9 种选择,cumsum 函数是将每次的移动累加,最后通过 plot 画出来。
2. 画出一个二次函数,同时画出梯形法求积分时的各个梯形
这里使用 IPython.html.widgets 模块中的 interact 函数,绘制一个交互式的函数图形。可以手动调整梯形个数,看到函数面积随梯形个数而变化。
def Quadratic(x): # 定义二次函数
return 2*x**2 +3*x +4
import numpy as np
import matplotlib.pyplot as plt
from IPython.html.widgets import interact
def plot_ladder(laddernum):
x = np.linspace(-5, 5, num=100)
y = Quadratic(x)
plot(x,y) # 先画出原函数的图形
a = np.linspace(-5, 5, num=laddernum)
for i in range(laddernum):
plot([a[i],a[i]],[0,Quadratic(a[i])],color="black") # 画梯形的上底和下底
ladders = [];
for i in range(laddernum):
ladders.append([a[i],Quadratic(a[i])]) # 因为梯形的腰是呈一条直线,所以这里存下各点坐标
npladders = np.array(ladders)
plot(npladders[:,0],npladders[:,1]); # 把梯形的斜腰连起来
interact(plot_ladder, laddernum=(1, 30, 1)) # 滑动模块在 1 和 30 之间变化,变化区间是 1

3. 研究 IPython.html.widgets 模块中的 interact 函数,绘制一个交互式的函数图形
2014 年 4 月,IPython 增加了 interactive widgets,提供了可以交互的界面组件,如下例:
from IPython.html.widgets import interact
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
def plot_sine(n):
x = np.arange(0, 20, 0.1)
y = np.sin(x/n)
plot(x,y)
interact(plot_sine, n=(1, 30, 0.1))

还可以这样用。
from IPython.html.widgets import interact, IntSlider # 把之前的画图函数改写成依赖于参数的函数
# 引入 interact 模块
from IPython.html.widgets import interact, IntSlider
# 把之前的画图函数改写成依赖于参数的函数
def test_interact(min_, max_, steps_):
x = np.linspace(min_, max_, steps_)
y = np.sin(x)
z = np.cos(x)
plot(x, y)
scatter(x, y)
# 使用 interact 来交互式的调试参数
interact(test_interact,
# 为每一个参数设定一个 interact 控件
min_=IntSlider(min=1, # 最小值
max=10, # 最大值
step=1, # 每次调节的步长
value=1), # 初始值
max_=IntSlider(min=10, max=20, step=1, value=10),
steps_=IntSlider(min=10, max=100, step=10, value=50))

4. Seaborn
Matplotlib 是 Python 主要的绘图库,但它本身很复杂,它的图经过大量的调整才能变精致。因此,作为替代,推荐使用Seaborn。Seaborn本质上使用Matplotlib作为核心库(就像Pandas对NumPy一样)。它可以:
- 默认情况下就能创建赏心悦目的图表。
- 创建具有统计意义的图。
- 能理解pandas的DataFrame类型,所以它们一起可以很好地工作。
import seaborn as sns
# Load one of the data sets that come with seaborn
tips = sns.load_dataset("tips")
sns.jointplot("total_bill", "tip", tips, kind='reg');

参考资料
Matplotlib 练习题的更多相关文章
- pandas补充(其二)与matplotlib补充
今日内容概要 pandas补充知识(2) matplotlib补充知识 今日内容详细 pandas补充 数据汇总 # 数据透视表 pd.pivot_table(data,values-None,ind ...
- Linux基础练习题(二)
Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...
- python安装numpy、scipy和matplotlib等whl包的方法
最近装了python和PyCharm开发环境,但是在安装numpy和matplotlib等包时出现了问题,现总结一下在windows平台下的安装方法. 由于现在找不到了工具包新版本的exe文件,所以采 ...
- shell 脚本之 shell 练习题汇总
整理了一些 shell 相关的练习题,记录到这里. 1. 请按照这样的日期格式 xxxx-xx-xx 每日生成一个文件,例如:今天生成的文件为 2013-09-23.log, 并且把磁盘的使用情况写到 ...
- matplotlib 高级用法实例--共享x轴
http://localhost:8888/notebooks/duanqs/matplotlib_advanced_example.ipynb 我不会弄呀, 刚才从matplotlib文档里吧示例用 ...
- MySQL练习题
MySQL练习题 一.表关系 请创建如下表,并创建相关约束 二.操作表 1.自行创建测试数据 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 3.查询平均成绩大于60分的同学的学号和平均成 ...
- MySQL练习题参考答案
MySQL练习题参考答案 2.查询“生物”课程比“物理”课程成绩高的所有学生的学号: 思路: 获取所有有生物课程的人(学号,成绩) - 临时表 获取所有有物理课程的人(学号,成绩) - 临时表 根据[ ...
- Python matplotlib笔记
可视化的工具有很多,如Tableau,各种JS框架,我个人感觉应该是学JS最好,因为JS不需要环境,每个电脑都有浏览器,而像matplotlib需要Python这样的开发环境,还是比较麻烦的,但是毕竟 ...
- Matplotlib——第一章轻松画个图
首先安装matplotlib,使用pip install matplotlib.安装完成后在python的命令行敲入import matplotlib,如果没问题,说明安装成功可以开始画图了. 看好了 ...
随机推荐
- 关于wcf三大工具的使用(wsdl.exe svcutil.exe disco.exe)
首先,我们必须创建一个wcf服务.并部署到IIS中.这里我已经将一个StudentService服务部署到我自己的电脑了. (1)svcutil.exe svcutil.exe工具的作用是通过服务地址 ...
- 【BZOJ5008】方师傅的房子 三角剖分
[BZOJ5008]方师傅的房子 Description 方师傅来到了一个二维平面.他站在原点上,觉得这里风景不错,就建了一个房子.这个房子是n个点的凸多边形,原点一定严格在凸多边形内部.有m个人也到 ...
- Android中Log机制详解
Android中Log的输出有如下几种: Log.v(String tag, String msg); //VERBOSELog.d(String tag, String msg); ...
- onethink判断是否是手机访问?
第一步:找到:Application / Common / Common / function.php 添加判断是否是手机访问的代码: /** * 判断当前访问的用户是 PC端 还是 手机端 返回tr ...
- javascript飞机大战-----006创建敌机
先写一个敌机类 /* 创建敌机: */ function Enemy(blood,speed,imgs){ //敌机left this.left = 0; //敌机top this.top = 0; ...
- 8.ajax查询数据
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- RedisDesktopManager 打开报0xc000007b程序错误
RedisDesktopManager 是一个管理redis的工具,很好用,我的电脑可以安装0.8.3版的,最新版到0.9.4了,其中经典版本是0.8.8,可惜0.8.3版之后,我的电脑安装软件后,打 ...
- javascript 执行环境,作用域链和闭包
首先看下这条语句: (function($) {…})(jQuery): 1.原理: function(arg){…}这就定义了一个匿名函数,参数为arg 而调用函数时,是在函数后面写上括号和实参的, ...
- handle exceptions, opening and closing database connections
https://www.tutorialspoint.com/spring/spring_jdbc_framework.htm Spring - JDBC Framework Overview Whi ...
- Day01 html详解
day01 html详解 1.html的简介 1.1 什么是html? - HyperText Markup Language:超文本标记语言,网页语言 ...