如何用python matplotlib python2.7ab 画出一个分段函数

19055人阅读
Python(65)
脚本语言(42)
&& 今天看了一下使用python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的2D和3D图形,先记录一下,以后慢慢学习。
&& matplotlib下载及API手册地址:
&& 数学库numpy下载及API手册地址:
&& 几个绘图的例子,来自API手册:
1、最简单的图:
#!/usr/bin/env python
import matplotlib.pyplot as plt
plt.plot([10, 20, 30])
plt.xlabel('tiems')
plt.ylabel('numbers')
plt.show()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from pylab import *
# make a square figure and axes
figure(1, figsize=(6,6))
ax = axes([0.1, 0.1, 0.8, 0.8])
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15,30,45, 10]
explode=(0, 0.05, 0, 0)
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})
savefig('D:\\pie.png')
3、使用numpy库函数:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0.0, 1.01, 0.01)
s = np.sin(2*2*np.pi*t)
plt.fill(t, s*np.exp(-5*t), 'r')
plt.grid(True)
#保存为PDF格式,也可保存为PNG等图形格式
plt.savefig('D:\\test.pdf')
plt.show()
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:779887次
积分:10238
积分:10238
排名:第949名
原创:205篇
转载:43篇
译文:46篇
评论:322条
文章:23篇
阅读:31979
文章:51篇
阅读:31943
文章:69篇
阅读:331952
文章:16篇
阅读:107350python 绘制拓扑图
本文实现的方法可以边异步加载数据边绘制拓扑图. 有若干点需要说明一下:
一次性获取所有数据并绘制拓扑图, 请参见文章: &使用 JsPlumb 绘制拓扑图的通用方法& ; 本文实现的最终显示效果与之类似, 所使用的基本方法与之类似.
在此次实现中, 可以一边异步加载数据一边绘制拓扑图, 是动态可扩展 ...
示例工程见:
http://download.csdn.net/detail/shuqin
一. 实现目标
绘制拓扑图, 实际上是个数据结构和算法的问题. 需要设计一个合适的数据结构来表达拓扑结构,设计一个算法来计算拓扑节点的位置及连接.
Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 /docs/reportlab-userguide.pdf 我们看看这个网页上的原数据: http://www.swpc.noaa.gov ...
今天学了Python 绘制了一幅正弦曲线 哈哈 需要numpy Python 库的支持 &&&import numpy as np &&& import matplotlib.pyplot as plt &&& x=np.arange(-np.pi,np.pi,0.01) &&& y=np.sin(x) ...
明明白白画拓扑 网络拓扑是一个网络的物理或逻辑结构图,拥有一个详细且精确的网络拓扑图对于建设网络和维护网络都是有很大帮助的,布线方可以根据拓扑图安排布线提高网络设施的建设速度,而维护方也可以根据拓扑替快速准确的找寻到网络故障问题所在. 究竟如何绘制一份详尽的网络拓扑图呢?目前主要有两种方法.一种是使用网管工具自动绘制,这个方法虽然可以节省很大的绘制工作量但存在一个最大的弊端 ...
python是解释型语言,下面的程序深刻的说明了这个问题.
import turtle def branch(length,level): if level&=0: return turtle.forward(length) turtle.left(45) branch(0.6*length,level-1) turtle.right(90) b ...
在本文中,我们将探讨一种简洁的方式,以此来可视化你的MP3音乐收藏.此方法最终的结果将是一个映射你所有歌曲的正六边形网格地图,其中相似的音轨将处于相邻的位置.不同区域的颜色对应不同的音乐流派(例如:古典.嘻哈.重摇滚).举个例子来说,下面是我所收藏音乐中三张专辑的映射图:Paganini的&Violin Caprices&.Eminem的&The Emin ...
pylab_examples example code: finance_work2.py (Source code, png, hires.png, pdf) import datetime import numpy as np import matplotlib.colors as colors import matplotlib.finance as finance
今天看了一下使用python绘制图表的方法,有个强大的类库matplotlib,可以制作出高质量的2D和3D图形,先记录一下,以后慢慢学习.
matplotlib下载及API手册地址:http://sourceforge.net/projects/matplotlib/files/matplotlib/
数学库numpy下载及API手册地址:http:// ...
Python图表绘制:matplotlib绘图库入门 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览//粘贴一 ...
Python图表绘制:matplotlib绘图库入门 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴 ...
matplotlib库 官网http://matplotlib.org/ 示例http://matplotlib.org/gallery.html 文档http://matplotlib.org/contents.html 中文入门//matplotlib-beginner-guide/
HT For Web 的HTML5拓扑图组件graphView背景设置有多种途径可选择: divBackground:通过css设置graphView对应的div背景 Painter:通过graphView.addBottomPainter(function(g, rect){…})来绘制背景 Layer:通过设置graphView.setLayer(['…', '…',
小白最近闲来无事,自学了一点metapost,主要用它来绘制拓扑图或流程图.小白最近在写自己从工作以来的所学,写成了一份PDF的电子文档(小白不太会使用MS Word).小白又不想使用JPEG或PNG格式的图片作为插图,因为它们不是矢量的图形,放大后图形就显得不够美观. 好了,废话不多说了,直接来个例子吧,这个插图来自是小白上学时的一本书&操作系统教程&.附代码 ...
本文给出使用 highchart 绘制柱状图的通用方法与接口, 只要指定相应的数据结构和配置, 就可以直接拿来使用.
数据结构与基本接口
一般绘制图形, 会涉及到较复杂的数据结构, 比如使用 jsPlumb 绘制拓扑图的通用接口 .方法是, 首先要弄清楚绘制图形所需要的数据结构,然后根据API文档设计一个公共接口, 并写 ...
birdeye绘制拓扑关系图 1.flex简单介绍 Flex 是一个高效.免费的开源框架,可用于构建具有表现力的 Web应用程序,这些应用程序利用Adobe Flash Player和Adobe AIR, 可以实现跨浏览器.桌面和操作系统.虽然只能使用 Flex 框架构建 Flex应用程序,但Adobe Flash Builder(TM)(之前称为 Adobe Flex Buil ...
这个是highcharts的官网,这边好多例子/ 绘制拓扑图还是有结构型的图则使用mxGraph可以达到很好的效果
拓扑学(TOPOLOGY)是一种研究与大小.距离无关的几何图形特性的方法,起初它是几何学的一支,研究几何图形在连续变形下保持不变的性质.而由此衍伸出来的拓扑图就是借图形显示量化信息.拓扑图一般用于计算机网络示意,也就是不考虑计算机实际的位置,只表示网络中每台计算机以及网络设备之间的相互关系.常见的拓扑结构有星型结构,总线结构,环型结构,树型结构等. 在企业顶层设计中使用思维 ...
网络拓扑图绘制工具: VISIO:网络图.但自带的模板(图形模板库)有限,可从网上下载华为.3COM还有思科的模板.Cisco网络产品(用的最广泛).Siemon布线产品.HP(Compaq)服务器产品都有自己的免费图库下载,这些图库随着产品升级换代而更新. 亿图:学cisco,绘制含有思科设备的网络拓扑建议用“亿图”.界面跟VISIO非常像.FPinger(Friendl ...
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. 在Linux下比较著名 ...python使用matplotlib绘图详解 - Python高级教程- Python进阶|Scrapy教程|Python高级|Python深入
官方微博:
python使用matplotlib绘图详解
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控...
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。 & & & &这篇我们用matplotlib从构造最简单的bar一步一步向复杂的bar前行。什么是最简单的bar,看如下语句你就知道她有多么简单了:import matplotlib.pyplot as plt
plt.bar(left = 0,height = 1)
plt.show()执行效果: 是的,三句话就可以了,是我见过最简单的绘图语句。首先我们import了matplotlib.pyplot ,然后直接调用其bar方法,最后用show显示图像。我解释一下bar中的两个参数:left:柱形的左边缘的位置,如果我们指定1那么当前柱形的左边缘的x值就是1.0了height:这是柱形的高度,也就是Y轴的值了left,height除了可以使用单独的值(此时是一个柱形),也可以使用元组来替换(此时代表多个矩形)。例如,下面的例子: import matplotlib.pyplot as plt
plt.bar(left = (0,1),height = (1,0.5))
plt.show()
可以看到 left = (0,1)的意思就是总共有两个矩形,第一个的左边缘为0,第二个的左边缘为1。height参数同理。 当然,可能你还觉得这两个矩形“太胖”了。此时我们可以通过指定bar的width参数来设置它们的宽度。import matplotlib.pyplot as plt
plt.bar(left = (0,1),height = (1,0.5),width = 0.35)
plt.show()
此时又来需求了,我需要标明x,y轴的说明。比如x轴是性别,y轴是人数。实现也很简单,看代码: import matplotlib.pyplot as plt
plt.xlabel(u'性别')
plt.ylabel(u'人数')
plt.bar(left = (0,1),height = (1,0.5),width = 0.35)
plt.show()
注意这里的中文一定要用u(3.0以上好像不用,我用的2.7),因为matplotlib只支持unicode。接下来,让我们在x轴上的每个bar进行说明。比如第一个是“男”,第二个是“女”。 import matplotlib.pyplot as plt
plt.xlabel(u'性别')
plt.ylabel(u'人数')
plt.xticks((0,1),(u'男',u'女'))
plt.bar(left = (0,1),height = (1,0.5),width = 0.35)
plt.show()
plt.xticks的用法和我们前面说到的left,height的用法差不多。如果你有几个bar,那么就是几维的元组。第一个是文字的位置,第二个是具体的文字说明。不过这里有个问题,很显然我们指定的位置有些“偏移”,最理想的状态应该在每个矩形的中间。你可以更改(0,1)=&( (0+0.35)/2 ,(1+0.35)/2 )不过这样比较麻烦。我们可以通过直接指定bar方法里面的align=&center&就可以让文字居中了。import matplotlib.pyplot as plt
plt.xlabel(u'性别')
plt.ylabel(u'人数')
plt.xticks((0,1),(u'男',u'女'))
plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center")
plt.show()
接下来,我们还可以给图标加入标题。plt.title(u"性别比例分析")
当然,还有图例也少不掉:import matplotlib.pyplot as plt
plt.xlabel(u'性别')
plt.ylabel(u'人数')
plt.title(u"性别比例分析")
plt.xticks((0,1),(u'男',u'女'))
rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center")
plt.legend((rect,),(u"图例",))
plt.show()
注意这里的legend方法,里面的参数必须是元组。即使你只有一个图例,不然显示不正确。 接下来,我们还可以在每个矩形的上面标注它具体点Y值。这里,我们需要用到一个通用的方法:def autolabel(rects):
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height)) 其中plt.text的参数分别是:x坐标,y坐标,要显示的文字。所以,调用代码如下:import matplotlib.pyplot as plt
def autolabel(rects):
for rect in rects:
height = rect.get_height()
plt.text(rect.get_x()+rect.get_width()/2., 1.03*height, '%s' % float(height))
plt.xlabel(u'性别')
plt.ylabel(u'人数')
plt.title(u"性别比例分析")
plt.xticks((0,1),(u'男',u'女'))
rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align="center")
plt.legend((rect,),(u"图例",))
autolabel(rect)
plt.show()
到这里这个图形已经基本完备了,不过可以看到你一个矩形紧靠这顶部,不是很好看。最好能够空出一段距离出来就好了。这个设置我没有找到具体的属性。不过,我还是通过一个小技巧来实现了。就是bar属性的yerr参数。一旦设置了这个参数,那么对应的矩形上面就会有一个竖着的线,我不知道他是干什么的。不过当我把这个值设置的很小的时候,上面的空白就自动空出来了。如图: rect = plt.bar(left = (0,1),height = (1,0.5),width = 0.35,align=&center&,yerr=0.000001)
对于左右两边能否空出空白来暂时还没有找到(xerr参数不行)
相关文章:
相关词搜索:
如对本文内容有疑问,或想进一步交流学习,欢迎通过以下方式:
2. python技术互助群:
3. 关注PythonTab微信: Pythontab ,公众号:Pythontab中文网
版权声明:本站文章除非注明,均为原创内容,如需转载请务必注明出处,违者本站保留追究其法律责任之权利。
频道总排行
频道本月排行如何用python matplotlab 画出一个分段函数_百度知道
如何用python matplotlab 画出一个分段函数
plt几个绘图的例子.plot([10.pyplot as plt
env python
import matplotlib!/tiems&#39,来自API手册;)
plt.ylabel(&#39, 20:1;bin/)
plt?#:[python] vnumbers'usr&#47.xlabel(&#39、最简单的图:代码
其他类似问题
为您推荐:
分段函数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Python图表绘制:matplotlib绘图库入门
matplotlib
是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。
它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。
在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不高。
而&则比较强:Matlab的语法、python语言、latex的画图质量(还可以使用内嵌的latex引擎绘制的数学公式)。
Matplotlib.pyplot快速绘图
matplotlib实际上是一套面向对象的绘图库,它所绘制的图表中的每个绘图元素,例如线条Line2D、文字Text、刻度等在内存中都有一个对象与之对应。
为了方便快速绘图matplotlib通过pyplot模块提供了一套和MATLAB类似的绘图API,将众多绘图对象所构成的复杂结构隐藏在这套API内部。我们只需要调用pyplot模块所提供的函数就可以实现快速绘图以及设置图表的各种细节。pyplot模块虽然用法简单,但不适合在较大的应用程序中使用。
为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用plt.gcf()和plt.gca()获得,分别表示"Get Current Figure"和"Get Current Axes"。在pyplot模块中,许多函数都是对当前的Figure或Axes对象进行处理,比如说:
plt.plot()实际上会通过plt.gca()获得当前的Axes对象ax,然后再调用ax.plot()方法实现真正的绘图。
可以在Ipython中输入类似"plt.plot??"的命令查看pyplot模块的函数是如何对各种绘图对象进行包装的。
matplotlib所绘制的图表的每个组成部分都和一个对象对应,我们可以通过调用这些对象的属性设置方法set_*()或者pyplot模块的属性设置函数setp()设置它们的属性值。
因为matplotlib实际上是一套面向对象的绘图库,因此也可以直接获取对象的属性
绘制一幅图需要对许多对象的属性进行配置,例如颜色、字体、线型等等。我们在绘图时,并没有逐一对这些属性进行配置,许多都直接采用了matplotlib的缺省配置。
matplotlib将这些缺省配置保存在一个名为“matplotlibrc”的配置文件中,通过修改配置文件,我们可以修改图表的缺省样式。配置文件的读入可以使用rc_params(),它返回一个配置字典;在matplotlib模块载入时会调用rc_params(),并把得到的配置字典保存到rcParams变量中;matplotlib将使用rcParams字典中的配置进行绘图;用户可以直接修改此字典中的配置,所做的改变会反映到此后创建的绘图元素。
(快速绘图)
Matplotlib
里的常用类的包含关系为&Figure -& Axes
-& (Line2D, Text, etc.)一个Figure对象可以包含多个子图(Axes),在matplotlib中用Axes对象表示一个绘图区域,可以理解为子图。
可以使用subplot()快速绘制包含多个子图的图表,它的调用形式如下:
subplot(numRows, numCols,
subplot将整个绘图区域等分为numRows行* numCols列个子区域,然后按照从左到右,从上到下的顺序对每个子区域进行编号,左上的子区域的编号为1。如果numRows,numCols和plotNum这三个数都小于10的话,可以把它们缩写为一个整数,例如subplot(323)和subplot(3,2,3)是相同的。subplot在plotNum指定的区域中创建一个轴对象。如果新创建的轴和之前创建的轴重叠的话,之前的轴将被删除。
subplot()返回它所创建的Axes对象,我们可以将它用变量保存起来,然后用sca()交替让它们成为当前Axes对象,并调用plot()在其中绘图。
(快速绘图)
如果需要同时绘制多幅图表,可以给figure()传递一个整数参数指定Figure对象的序号,如果序号所指定的Figure对象已经存在,将不创建新的对象,而只是让它成为当前的Figure对象。
import numpy as np
importmatplotlib.pyplot as plt
plt.figure(1) #
plt.figure(2) #
ax1 = plt.subplot(211) #
在图表2中创建子图1
ax2 = plt.subplot(212) #
在图表2中创建子图2
x = np.linspace(0, 3, 100)
for i in xrange(5):
plt.figure(1)& #❶ #
plt.plot(x, np.exp(i*x/3))
plt.sca(ax1)&&
选择图表2的子图1
plt.plot(x, np.sin(i*x))
plt.sca(ax2)& #
选择图表2的子图2
plt.plot(x, np.cos(i*x))
plt.show()
matplotlib的缺省配置文件中所使用的字体无法正确显示中文。为了让图表能正确显示中文,可以有几种解决方案。
在程序中直接指定字体。
在程序开头修改配置字典rcParams。
修改配置文件。
面向对象画图
matplotlib
API包含有三层,Artist层处理所有的高层结构,例如处理图表、文字和曲线等的绘制和布局。通常我们只和Artist打交道,而不需要关心底层的绘制细节。
直接使用Artists创建图表的标准流程如下:
创建Figure对象
用Figure对象创建一个或者多个Axes或者Subplot对象
调用Axies等对象的方法创建各种简单类型的Artists
import matplotlib.pyplot as plt
X1 = range(0, 50)
Y1 = [num**2 for num in X1] # y = x^2
X2 = [0, 1]
Y2 = [0, 1]& # y = x
plt.figure(figsize=(8,4))&&&&&&&&&&&&&&&&&&&&&
# Create a `figure' instance
Fig.add_subplot(111)&&&&&&&&&&&&&&
# Create a `axes' instance in the figure
Ax.plot(X1, Y1, X2,
Y2)&&&&&&&&&&&&&&&&
# Create a Line2D instance in the axes
Fig.show()
Fig.savefig("test.pdf")
《Python科学计算》()&(深入浅出适合系统学习)
&(主要讲面向对象绘图,对于新手可能有点乱)
Matplotlib.pylab快速绘图
matplotlib还提供了一个名为pylab的模块,其中包括了许多NumPy和pyplot模块中常用的函数,方便用户快速进行计算和绘图,十分适合在IPython交互式环境中使用。这里使用下面的方式载入pylab模块:
&&& import
pylab as pl
安装numpy和matplotlib
&&& import
numpy.__version__
&&& import
matplotlib
matplotlib.__version__
两种常用图类型:Line and scatter
plots(使用plot()命令), histogram(使用hist()命令)
折线图&散点图&Line and scatter
折线图 Line
plots(关联一组x和y值的直线)
import numpy as np
import pylab as pl
x = [1, 2, 3, 4, 5]# Make an array of x
y = [1, 4, 9, 16, 25]# Make an array of y values
for each x value
pl.plot(x, y)# use pylab to plot x and
pl.show()# show the plot on the screen
散点图 Scatter
把pl.plot(x,
y)改成pl.plot(x, y, 'o')即可,下图的蓝色版本
美化 Making things look
线条颜色&Changing the
line&color
红色:把pl.plot(x, y,
'o')改成pl.plot(x, y, ’or’)
线条样式 Changing the line style
虚线:plot(x,y,
2.2.3 marker样式
Changing the marker style
蓝色星型markers:plot(x,y, ’b*’)
图和轴标题以及轴坐标限度 Plot and axis titles and limits
import numpy as np
import pylab as pl
x = [1, 2, 3, 4, 5]# Make an array of x
y = [1, 4, 9, 16, 25]# Make an array of y values
for each x value
pl.plot(x, y)# use pylab to plot x and
pl.title(’Plot of y vs. x’)# give plot a
pl.xlabel(’x axis’)# make axis labels
pl.ylabel(’y axis’)
pl.xlim(0.0, 7.0)# set axis limits
pl.ylim(0.0, 30.)
pl.show()# show the plot on the screen
2.2.5&在一个坐标系上绘制多个图
Plotting more than one plot on the same set of
做法是很直接的,依次作图即可:
import numpy as np
import pylab as pl
x1 = [1, 2, 3, 4, 5]# Make x, y arrays for each
y1 = [1, 4, 9, 16, 25]
x2 = [1, 2, 4, 6, 8]
y2 = [2, 4, 8, 12, 16]
pl.plot(x1, y1, ’r’)# use pylab to plot x and
pl.plot(x2, y2, ’g’)
pl.title(’Plot of y vs. x’)# give plot a
pl.xlabel(’x axis’)# make axis labels
pl.ylabel(’y axis’)
pl.xlim(0.0, 9.0)# set axis limits
pl.ylim(0.0, 30.)
pl.show()# show the plot on the screen
图例 Figure legends
pl.legend((plot1, plot2),
(’label1, label2’), 'best’, numpoints=1)
其中第三个参数表示图例放置的位置:'best’‘upper right’, ‘upper left’, ‘center’, ‘lower left’,
‘lower right’.
如果在当前figure里plot的时候已经指定了label,如plt.plot(x,z,label="$cos(x^2)$"),直接调用plt.legend()就可以了哦。
import numpy as np
import pylab as pl
x1 = [1, 2, 3, 4, 5]# Make x, y arrays for each
y1 = [1, 4, 9, 16, 25]
x2 = [1, 2, 4, 6, 8]
y2 = [2, 4, 8, 12, 16]
plot1 = pl.plot(x1, y1, ’r’)# use pylab to plot x
and y : Give your plots names
plot2 = pl.plot(x2, y2, ’go’)
pl.title(’Plot of y vs. x’)# give plot a
pl.xlabel(’x axis’)# make axis labels
pl.ylabel(’y axis’)
pl.xlim(0.0, 9.0)# set axis limits
pl.ylim(0.0, 30.)
pl.legend([plot1, plot2], (’red line’, ’green
circles’), ’best’, numpoints=1)# make legend
pl.show()# show the plot on the screen
直方图 Histograms
import numpy as np
import pylab as pl
# make an array of random numbers with a gaussian
distribution with
# mean = 5.0
# rms = 3.0
# number of points = 1000
data = np.random.normal(5.0, 3.0, 1000)
# make a histogram of the data array
pl.hist(data)
# make plot labels
pl.xlabel(’data’)
如果不想要黑色轮廓可以改为pl.hist(data, histtype=’stepfilled’)
自定义直方图bin宽度
Setting the width of the histogram bins
增加这两行
bins = np.arange(-5., 16.,
1.) #浮点数版本的range
pl.hist(data, bins, histtype=’stepfilled’)
同一画板上绘制多幅子图 Plotting more than one axis per canvas
如果需要同时绘制多幅图表的话,可以是给figure传递一个整数参数指定图标的序号,如果所指定序号的绘图对象已经存在的话,将不创建新的对象,而只是让它成为当前绘图对象。
pl.figure(1)pl.subplot(211)subplot(211)把绘图区域等分为2行*1列共两个区域,
然后在区域1(上区域)中创建一个轴对象. pl.subplot(212)在区域2(下区域)创建一个轴对象。
You can play around with
plotting a variety of layouts. For example, Fig. 11 is created
using the following commands:
pl.figure(1)pl.subplot(221)pl.subplot(222)pl.subplot(212)
当绘图对象中有多个轴的时候,可以通过工具栏中的Configure Subplots按钮,交互式地调节轴之间的间距和轴与边框之间的距离。如果希望在程序中调节的话,可以调用subplots_adjust函数,它有left, right, bottom, top, wspace,
hspace等几个关键字参数,这些参数的值都是0到1之间的小数,它们是以绘图区域的宽高为1进行正规化之后的坐标或者长度。
pl.subplots_adjust(left=0.08, right=0.95, wspace=0.25,
hspace=0.45)
绘制文件中的数据Plotting data contained in files
从Ascii文件中读取数据
Reading data from ascii files
读取文件的方法很多,这里只介绍一种简单的方法,更多的可以参考官方文档和。
numpy的loadtxt方法可以直接读取如下文本数据到numpy二维数组
**********************************************
fakedata.txt0
**********************************************
import numpy as np
import pylab as pl
# Use numpy to load the data contained in the file
# ’fakedata.txt’ into a 2-D array called
data = np.loadtxt(’fakedata.txt’)
# plot the first column as x, and second column as
pl.plot(data[:,0], data[:,1], ’ro’)
pl.xlabel(’x’)
pl.ylabel(’y’)
pl.xlim(0.0, 10.)
写入数据到文件 Writing data to a text file
写文件的方法也很多,这里只介绍一种可用的写入文本文件的方法,更多的可以参考官方文档。
import numpy as np
# Let’s make 2 arrays (x, y) which we will
write to a file
# x is an array containing numbers 0 to 10, with
intervals of 1
x = np.arange(0.0, 10., 1.)
# y is an array containing the values in x,
print ’x = ’, x
print ’y = ’, y
# Now open a file to write the data to
# ’w’ means open for ’writing’
file = open(’testdata.txt’, ’w’)
# loop over each line you want to
write to file
for i in range(len(x)):
make a string for each line you want to write
’\t’ means ’tab’
’\n’ means ’newline’
’str()’ means you are converting the quantity in brackets to
a string type
= str(x[i]) + ’\t’ + str(y[i]) + ’ \n’
# write the txt to the file
file.write(txt)
# Close your file
file.close()
这部分是翻译自:
对LaTeX数学公式的支持
Matlplotlib对LaTeX有一定的支持,如果记得使用raw字符串语法会很自然:
xlabel(r"$\frac{x^2}{y^4}$")
在matplotlib里面,可以使用LaTex的命令来编辑公式,只需要在字符串前面加一个“r”即可
Here is a simple
textplt.title('alpha & beta')
produces “alpha
Whereas this:
textplt.title(r'$\alpha & \beta$')
produces " ".
这里给大家看一个简单的例子。
import matplotlib.pyplot as
arange(1,1000,1)r
= [5*(a**r) for a in x]
plt.figure()
fig.add_subplot(111)ax.loglog(x,y,label = r"$y = \frac{1}{2\sigma_1^2},
c=5,\sigma_1=-2$")ax.legend()ax.set_xlabel(r"x")ax.set_ylabel(r"y")
程序执行结果如图3所示,这实际上是一个power-law的例子,有兴趣的朋友可以继续google之。
再看一个《用Python做科学计算》中的简单例子,下面的两行程序通过调用plot函数在当前的绘图对象中进行绘图:
plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.plot(x,z,"b--",label="$cos(x^2)$")
plot函数的调用方式很灵活,第一句将x,y数组传递给plot之后,用关键字参数指定各种属性:
给所绘制的曲线一个名字,此名字在图示(legend)中显示。只要在字符串前后添加"$"符号,matplotlib就会使用其内嵌的latex引擎绘制的数学公式。
指定曲线的颜色
linewidth&:
指定曲线的宽度
详细的可以参考matplotlib官方教程:
有几个问题:
matplotlib.rcParams属性字典
想要它正常工作,在matplotlibrc配置文件中需要设置text.markup = "tex"。
如果你希望图表中所有的文字(包括坐标轴刻度标记)都是LaTeX'd,需要在matplotlibrc中设置text.usetex = True。如果你使用LaTeX撰写论文,那么这一点对于使图表和论文中其余部分保持一致是很有用的。
在matplotlib中使用中文字符串时记住要用unicode格式,例如:u''测试中文显示''
参考原文:/wei-li/archive//2506940.html
对数坐标轴
在实际中,我们可能经常会用到对数坐标轴,这时可以用下面的三个函数来实现
ax.semilogx(x,y)
#x轴为对数坐标轴
ax.semilogy(x,y)
#y轴为对数坐标轴
ax.loglog(x,y)
#双对数坐标轴
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 python安装matplotlib 的文章

 

随机推荐