首页 > 编程知识 正文

python中[::-1],python中csv文件

时间:2023-05-03 15:40:02 阅读:164019 作者:480

pyplot介绍matplotlib.pyplot是一组命令样式与MATLAB非常相似的函数。 每个pyplot函数都会稍微更改图像,例如创建图、在图中创建绘图区域以及在绘图区域中添加线条。 matplotlib.pyplot通过函数调用保存各种状态,以便随时跟踪当前图像、绘图区域等。 绘图函数是直接作用于当前axes(matplotlib )的专有名词,是图形的组成部分,不是数学坐标系。 )

举个简单的例子:

importmatplotlib.pyplotasplt.plot ([ 1,2,3,4 ] ) PLT.ylabel(somenumbers ' ) plt.show )执行结果

你可能会怀疑x和y轴为什么是0~3和1~4。 理由是这样的。 其中,plot ) )指定了list或array,matplotlib假设此序列是y轴上的值,并且会自动生成x轴上的值。 python的范围从0开始,因此x轴从0开始,长度等于y的长度,即[ 0,1,2,3 ]。

plot ) )是一个灵活的命令,可以有任意数量的参数。 例如,以下内容:

PLT.plot ([ 1,2,3,4 ],[ 1,4,9,16 ] ) 1这表示() x,y )对,(1,1 ) ) 2,4 ) ) 3,9 ),4,16 ) 这里有第三个可选参数。 这是字符串格式,表示颜色和线条类型。 字符串格式的字符和符号来自MATLAB,是颜色字符串和线条类型字符串的组合。 缺省情况下,字符串参数为“B-”,表示蓝色实线。

以使用红色圆绘制上述点集为例。

importmatplotlib.pyplotasplt.plot ([ 1,2,3,4 ]、[ 1,4,9,16 ]、' ro ' ) PLT.axis ([ 0,6,0,20 ] ) )

plot ) )的文档。 那里有关于线类型的完整说明。 axis ) )命令可以方便地获取和设置XY轴的属性。

如果matplotlib被限定于如上所述的list,则这是无用的。 通常,我们使用numpy数组。 实际上,所有序列都在内部转换为numpy数字。 下面的示例使用一个命令用几种不同样式的线条绘制数组:

在importnumpyasnpimportmatplotlib.pyplotasplt # 0到5之间,整数t=NP.arange(0.5 .0.2 )红色短划线、蓝色方块和绿色三角形PLT.PLT .

控制线属性

线条可以具有各种属性,如线条粗细、线条形状和平滑度。 这里有几种设定线条属性的方法。

如果对关键字参数PLT.plot(x (使用x,y,linewidth=2.0 ) 1的线对象(Line2D )使用set_方法,plot )将返回线对象列表例如,line1,line2=plot(x1,y1,x2以下代码假设返回的线对象列表中只有一条线的长度为1。 line,=PLT.plot(x,y,“-”) line.set_antialiased禁用平滑的setp ) )命令。 下面的示例使用MATLAB样式的命令设置单行列表的多个属性: setp ) )可以应用于列表对象或单个对象。 可以使用python样式的关键字参数或MATLAB样式的string/value对作为参数。 lines=PLT.plot(x1,y1,x2,y2 ) #关键字PLT.setp ) lines,color='r '。 linewidth=2.0(#或MATLAB类型的string/value对PLT.setp(Line2D,' color ',' r ',' linewidth ',2.0 ) 123456789这是某些lines

多图形(figures )和多坐标系(axes )工作

“MATLAB”和“pyplot”都有“当前形状”(figure )和“当前坐标系”(axes )的概念。 的所有绘制命令都适用于当前坐标系。 gca (和gcf ) )“获得当前轴/图形”(get current axes/figures )分别获取当前轴和图形对象。 通常,你不需要担心这些。 因为他们被保存在幕后。 以下是一个示例,创建了两个子图区域(subplot )。

importnumpyasnpimportmatplotlib.pyplotaspltdeff (t ) :returnNP.exp(-t ) NP.cos )2* NP.pi * t t1=NP.at

plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')plt.subplot(212)plt.plot(t2, np.cos(2*np.pi*t2), 'r--')plt.show() 12345678910111213141516

figure()命令在这儿可以不写,因为figure(1)将会被默认执行,同样,subplot(111)也是默认被执行的。subplot()中的参数分别指定了numrows、numcols、fignum,其中fignum的取值范围为1到numrows*numcols,分别表示的是将绘图区域划分为numrows行和numcols列个子绘图区域,fignum为当前子图的编号。编号是从1开始,一行一行由左向右编号的。其实subplot中的参数【111】本应写作【1,1,1】,但是如果这三个参数都小于10(其实就是第三个参数小于10)就可以省略逗号。你可以创建任意数量的子图(subplots)和坐标系(axes)。如果你想手动放置一个axes,也就是它不再是一个矩形方格,你就可以使用命令axes(),它可以让坐标系位于任何位置,axes([left,bottom,width,height]),其中所有的值都是0到1(axes([0.3,0.4,0.2,0.3])表示的是该坐标系位于figure的(0.3,0.4)处,其宽度和长度分别为figure横坐标和纵坐标总长的0.2和0.3)。其实subplot和axes的区别就在于axes大小和位置更加随意。
你可以创建多个figure,通过调用figure(),其参数为figure的编号。当然每个figure可以包含多个subplot或者是多个axes。例子:

import matplotlib.pyplot as pltplt.figure(1) # 编号为1的figureplt.subplot(211) # figure1中的第一个子图plt.plot([1, 2, 3])plt.subplot(212) # figure1中的第二个子图plt.plot([4, 5, 6])plt.figure(2) # figure2plt.plot([4, 5, 6]) # 默认使用subplot(111),此时figure2为当 # 前figureplt.figure(1) # 设置figure1为当前figure; # 但是subplot(212)为当前子图plt.subplot(211) # 使subplot(211)为当前子图plt.title('Easy as 1, 2, 3') # 对subplot(211)命名 12345678910111213141516

我们可以使用clf()和cla()(clear current figure/axes)清除当前figure和当前axes。
如果你创建了许多figures,你需要注意一件事:figure的内存直到显示调用close()函数才会被完全释放,否则它并没有被全部释放。如果只是删掉对figure的引用,或者是通过关闭window进程管理器关闭该figure,这都是不完全删除figure的,因为pyplot在内部维持了一个引用,直到close()被调用。

文字
text()命令可以被用来在任何位置添加文字,xlabel()、ylabel()、title()被用来在指定位置添加文字。

import numpy as npimport matplotlib.pyplot as pltmu, sigma = 100, 15x = mu + sigma * np.random.randn(10000)# 直方图n, bins, patches = plt.hist(x, 50, normed=1, facecolor='g', alpha=0.75)plt.xlabel('Smarts')plt.ylabel('Probability')plt.title('Histogram of IQ')plt.text(60, .025, r'$mu=100, sigma=15$')plt.axis([40, 160, 0, 0.03])plt.grid(True)plt.show() 12345678910111213141516171819


所有text()命令返回一个matplotlib.text.Text实例,像上面的线一样,可以通过关键字参数在text()定制文本样式,也可以通过setp()来定制文字的样式:

t = plt.xlabel('my data', fontsize=14, color='red')setp(t,color='blue') 12 在文本中使用数学表达式
matplotlib接受任何TeX方程表达式,比如,你可以写成用”$”符号包裹的TeX表达式:plt.title(r'$sigma_i=15$') 1

这里的”r”非常重要,它表示后面的字符串是一个纯粹的字符串,不会将后面的反斜杠当作转义字符。matplotlib内置有TeX表达式解释器和排版引擎,和自带的数学字体。因此你可以不用安装TeX就能使用数学表达式,如果你安装了LaTeX和dvipng,你也可以使用LaTex排版你的文字并且直接输出到figures或者是保存。

注释文本
使用text()命令可以在Axes中任意位置放置文本,一个普遍的文本用法是对一些特性进行注释,annotate()方法让添加注释变得很容易。对于注释有两点需要注意:需要被注释的地方,使用xy参数来指出,还有就是注释文本所放置的位置,使用参数xytext来指定位置,这两个参数都使(x,y)元组:import numpy as npimport matplotlib.pyplot as pltax = plt.subplot(111)t = np.arange(0.0, 5.0, 0.01)s = np.cos(2*np.pi*t)line, = plt.plot(t, s, lw=2)plt.annotate('local max', xy=(2, 1), xytext=(3, 1.5), arrowprops=dict(facecolor='black', shrink=0.05), )plt.ylim(-2,2)plt.show() 123456789101112131415


这里的xy和xytext所使用的坐标是根据XY轴的刻度的坐标,称为data coordinates。当然也可以使用其他坐标系统,具体参考官方文档。

对数和其他非线性坐标轴(axis)
matplotlib.pylot不仅仅提供了线性的坐标,还提供了对数(logarithmic)和分对数(logit)坐标。当数据的维度跨越许多数量级时,这种坐标就很有用,改变坐标轴的刻度很容易:

plt.xscale(‘log’) 1

下面是一个例子,对于同样的数据,在Y轴使用不同刻度下的曲线图:

import numpy as npimport matplotlib.pyplot as plt# 在区间[0,1]制造一些数据# np.random.normal为sddkf分布y = np.random.normal(loc=0.5, scale=0.4, size=1000)y = y[(y > 0) & (y < 1)]y.sort()x = np.arange(len(y))# 创建一个窗口plt.figure(1)# 线性plt.subplot(221)plt.plot(x, y)plt.yscale('linear')plt.title('linear')plt.grid(True)# 对数plt.subplot(222)plt.plot(x, y)plt.yscale('log')plt.title('log')plt.grid(True)# symmetric logplt.subplot(223)plt.plot(x, y - y.mean())plt.yscale('symlog', linthreshy=0.05)plt.title('symlog')plt.grid(True)# logitplt.subplot(224)plt.plot(x, y)plt.yscale('logit')plt.title('logit')plt.grid(True)plt.show() 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758


我们也可以添加自己的刻度和投影。具体这里先不介绍,后续会深入讲解更多matplotlib的用法。


转载:http://blog.csdn.net/qq_31192383/article/details/53977822

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。