Python Shell下使用matplotlib

Created Monday 10 December 2012

matplotlib默认是延迟绘图直到脚本结束,因为绘图是一个高代价的操作。所以可能不想每次每个属性的改变就更新绘图,只有所有的属性都改变了才更新。

但是,当在python shell上工作时,你通常想图形根据每个命令如改变xlabel()或者线条标识类型时都更新。概念上这是很简单的,但是在实际中确实很复杂,因为matplotlib本质上是图形用户接口应用程序,所以有很多技巧来使matplotlib在python shell上工作的很好。

6.1 救星Ipython

幸运的是,ipython,增强的交互式python shell.有很多技巧和matplotlib提醒,所以你可以用pylab模式启动ipython。

johnh@flag:~> ipython -pylab

Python 2.4.5 (#4, Apr 12 2008, 09:09:16)

IPython 0.9.0 -- An enhanced Interactive Python.

Welcome to pylab, a matplotlib-based Python environment.

For more information, type 'help(pylab)'.

In [1]: x = randn(10000)

In [2]: hist(x, 100)

它会如你所期待的那样做了很多交互式绘图工作。调用figure(),就会弹出视图窗口;调用plot(),你的数据就会显示在视图窗口上。

注意在上面的示例中,我们并没有导入任何matplotlib包,因为这是在pylab模式下,ipython会自动把它们导入进来。ipython会为你打开交互式模式,这会导致pyplot命令触发视图窗口更新,同时提供了matplotlib提醒run命令来有效运行脚本。ipython会关闭交互式模式当运行run命令时,然后在运行完毕使恢复到交互式模式的状态,你又可以继续手动操作视图窗口。

在pylab模式的支持下,ipython己经为嵌入到图形用户接口应用程序做了很多工作,可以在Ipython邮件列表里查看最新状态。

6.2 其它pyton解释器

如果你没有使用ipython,但是还想使用matplotlib/pylab模式在交互式python shell上。如标准python交互式解释器,或者你喜欢的IDE下的解释器,你应该了解什么是matplotlib的后端(什么是后端?)

设置为TkAgg后端就可以使用Tkinter的用户接口工具箱,你也使用matplotlib在任意的python shell,仅仅需要设置你的后端和交互式模式 backend : TkAgg, interactive : True在你的matplotlibrc文件(查看定制matplotlib),然后启动python.

>>> from pylab import *

>>> plot([1, 2, 3])

>>> xlabel('hi mom')

就可以即开即用。注意在批处理模式,如从脚本中创建视图窗口,交互模式可能很慢,因为它会为每个命令重绘。所以在设置这个为默认行为时前,请考虑清楚。

对于其它的用户接口工具箱和对应的matplotlib后端,这种情形很复杂,因为GUI的mainloop会占用整个处理过程。解决方案就是使用单独的线程运行图形界面,这就是ipython很聪明的解决matplotlib支持的大多数包的方式。据报道说,pygtk的后继版本可以很好的支持标准python shell,这是太好了!

6.3 控制交互式更新

pyplot接口的交互式属性控制着是否视图窗口绘图面板在每个pyplot命令都绘制。如果interactive设置为False,视图窗口会在每个绘图命令都更新,但是只会在显示调用draw()命令之后才会绘制。如果interactive设置为True,每个pyplot命令都会重新绘制。

pyplot接口提供了4个有用命令来控制交互式

isinteractive()返回interactive的设置True| False

ion() 打开交互式模式

ioff() 关闭交互式模式

draw() 强制视图窗口重绘

当处理大数据,要绘图的代价很大时,你可能想关闭matplotlib的交互式设置来提供性能:

>>> ioff()

>>> title("now how much would you pay")

>>> xticklabel(fontsize=20, color='green')

>>> draw()

>>> savefig('alldone', dpi=300)

>>> close()

>>> ion()

>>> plot(rand(20), mfc='g', mec='r', ms=40, mew=4, ls='--', lw=3)

pythonshell画图_Python Shell下使用matplotlib相关推荐

  1. python的方向_Python Shell下方向键显示「^[[C^[[D」修复方法

    在Python Shell中出现"「^[[C^[[D」"字符样式的原因是什么,要怎么样才能修复呢?遇到这样问题的python爱好者们可以参考玩蛇网python问答,下面试过的有效方 ...

  2. matplotlib画图_Python数据可视化工具Matplotlib之画图(四)(饼状图)

    概述 在<Python数据可视化工具Matplotlib之画图(三)(柱状图)>中讲述了如何通过Matplotlib画柱状图,本文讲述如何通过Matplotlib画饼状图. matplot ...

  3. Ubuntu下用matplotlib作图时显示中文

    之前在Ubuntu下用matplotlib作图的时候发现无法正常显示中文,查了一番以后发现是Ubuntu系统和matplotlib库没有共同可显示的中文字体库的原因.用此文章的方法可以解决这一问题. ...

  4. Matplotlib 中文用户指南 7.2 Python shell 中使用 Matplotlib

    在 Python shell 中使用 Matplotlib 原文:Using matplotlib in a python shell 译者:飞龙 协议:CC BY-NC-SA 4.0 警告 该页面的 ...

  5. python bashplotlib_Matplotlib 中文用户指南 7.2 Python shell 中使用 Matplotlib

    在 Python shell 中使用 Matplotlib 译者:飞龙 警告 该页面的内容已严重过时. 默认情况下,matplotlib 将绘图延迟到脚本结束,因为绘图可能是开销大的操作,并且你可能不 ...

  6. 02、体验Spark shell下RDD编程

    02.体验Spark shell下RDD编程 1.Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集.该类是Spark是核心类成员之 ...

  7. TensorFlow下安装matplotlib模块

    如果运行TensorFlow时报错"no module named matplotlib ",这是因为未安装matplotlib,打开命令提示符小黑框,输入 pip install ...

  8. linux有读EC RAM的工具吗,Step to UEFI (179)Shell下 EC Ram 读取工具

    最近工作需要在 UEFI  Shell 下Check EC Ram 的设定,发现手上只有 Windows 下的读取工具(RW Everything).于是研究了一下如何在Shell 读取 EC Ram ...

  9. shell下的常用语句

    一.别名:alias 自定义别名: 1. alias可用于创建命令的别名,若直接输入该命令且不带任何参数,则列出当前用户使用了别名的命令 2. 使用alias可以自定义别名,并且定义的别名也是支持ta ...

最新文章

  1. JuJu团队12月28号工作汇报
  2. .net随笔-vb.net打开外部程序发送键盘信号(2)
  3. 一件重要的事想要告诉大家
  4. adb shell 调试 Android 串口
  5. Django - Cookie和Session
  6. cdn dashjs_CSS以及JS各种库的在线CDN引用地址
  7. java 断点续传 开源_java断点续传后台代码
  8. 计算机网络学习笔记(17. 计算机网络作业一)
  9. 什么不用 iframe 做微前端
  10. ajax前台值传到后台
  11. Codeforces Round #379 (Div. 2) 总结分享
  12. MySQL保存历史执行语句
  13. php composer 无法下载,composer给laravel下载扩展包 无法下载的问题
  14. Android自定义View-View的绘制流程
  15. Vuex模块化用法 跨模块调用方法
  16. 什么是人脉和人脉资源
  17. Java配置文件找不到指定,使用@ContextConfiguration注解后,提示找不到配置文件
  18. 计算机音乐简单好听,电脑上好听的歌怎么录制,教你2分钟,截取你爱听的声音...
  19. pinyin4J一款非常好用的汉字和拼音转换的插件
  20. 想抵御“黑客”和“黑产”,智能 + 安全能不能有高招?

热门文章

  1. 《DDIA》读书笔记
  2. C++——简单数据类型及布尔类型
  3. CentOS7.4-btrfs管理及使用
  4. bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】
  5. 超级简单的jquery轮播图demo
  6. 4566: [Haoi2016]找相同字符 SAM
  7. 15-11-23:system指令
  8. C#事件的发送方和接收方(订阅方)
  9. 【Boost】noncopyable:不可拷贝
  10. CI流水线配置文件参数详解(一)