今天来学一些花里胡哨的:

  1. 极坐标绘图;

我们使用极坐标并且使用来定义一条曲线,这个时候,使用极坐标系来绘图是最好的:

图一:极坐标系绘图

代码:

import turtle
import matplotlib.pyplot as plt
import numpy as np
theta=np.linspace(0,2*np.pi,201)
r1=np.abs(np.cos(5.0*theta)-1.5*np.sin(1.0*theta))
r2=theta/np.pi
r3=2.25*np.ones_like(theta)
fig=plt.figure()
ax=fig.add_subplot(1,1,1,projection="polar")
ax.plot(theta,r1,label="trig")
ax.plot(5*theta,r2,label="sprial")
ax.plot(theta,r3,label="circle")
ax.legend(loc="best")
fig.show()
turtle.done()

注意,这里的turtle是我自己加的,因为我发现,fig.show()他就不显示图片,直接一闪而过,没饭看到图,查了之后,就加了两句:

import turtle
#fig.show()
turtle.done()

然后他就会一直显示图片了

  1. 误差条

就是,如果你有一大串数据,但是你发现,你的数据和理论值是有误差的,那么这个时候,我们就要及时的得到误差情况的可视化,以方便我们能够更加直观的来获取相关信息,Matplotlib提供了ax.errobar函数,他和plt.plot差不多,但是是包含其他额外的参数的,首先,y变量的误差用yerr来表示,假设y的长度是n,如果yerr有相同的维度,那么就会之对称的误差条,所以说,对于y[k]的第k个点,误差条从y[k]-yerr[k]到y[k]+yerr[k],如果误差不对称,那么yerr应该是一个2*n的数组,第k个误差条,从

y[k]-yerr[0,k]到y[k]-yerr[1,k],这是同样适用于x的误差和相应的xerr变量,默认情况下,颜色和现款由主曲线确定,也可以用ecolor、elinewidth来设定,其他的参数,可以参考文档

跟着书上的来写一下:

import numpy as np
import matplotlib.pyplot as plt
import numpy.random as npr
import turtle
x=np.linspace(0,4,21)
y=np.exp(-x)
xe=0.08*npr.rand(len(x))
ye=0.1*npr.rand(len(y))
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.errorbar(x,y,fmt='bo',lw=2,xerr=xe,yerr=ye,ecolor='r',elinewidth=1)
fig.show()
turtle.done()

图二:误差图

  1. 文本和注释:

你想知道图中某一点的相关信息,怎么搞呢,你就可以在坐标(x,y)开始的位置放置一个纯文本字符串,

这个就可以用np.text(x,y,'some plain')来解决:

x=np.linspace(0,2,101)
y=(x-1)**3-1
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(x,y)
ax.annotate("point of inflection at ax=1",xy=(1,1),xytext=(0.8,0.5),arrowprops=dict(facecolor="black",width=1,shrink=0.05))
fig.show()
turtle.done()

他这个代码有问题,输出不了和书上一摸一样的:

图三:代码有问题

  1. LATEX:

latex是指定好用,做出来的数学公司就是好:

对上面这个加一句看看:

ax.set_title(r'Formula:$z=x^2-y^2$')

图四:添加Latex标题之后的图片

  1. 等高线:

这个我有发言权,之前自己仿真的数据,拿matlab的等高线做的,感觉很丑,师兄当时说我颜色和样式没调整对,我也没怎么注意,今天来看看等高线:

import turtle
import numpy as np
import matplotlib.pyplot as plt
import numpy.random as nprfig=plt.figure()ax=fig.add_subplot(1,1,1)
[X,Y]=np.mgrid[-1.5:2.5:51j,-1:3:61j]
Z=X**2-Y**2
curves=ax.contour(X,Y,Z,12,colors='k')
ax.clabel(curves)
ax.set_title(r'Formula:$z=x^2-y^2$',fontsize=20)
fig.show()
turtle.done()

图五:等高线绘制

12的意思就是话12条等高线,你看还可以画的更多,更好看,比如,我把等高线数量调成50,颜色调成蓝色:

图六:等高线数量和颜色修改

感觉有点像是用蓝色圆珠笔画的,哈哈

另外呢,你还可以填充等高线颜色,不过这个就是你另一个函数contourf了:

curves=ax.contourf(X,Y,Z,50)

图七:填充等高线

同时呢,你还可以加一个色棒来进行颜色对比:

fig.colorbar(curves,orientation='vertical')

图八:加入色棒

行了,到最后了,其实,这些工具书里面讲的都是非常少的,他们要求的就是实用性强就行,要是说你想做出更漂亮的图片,我的建议还是看文档。

  1. 复合图形:就是多个图形在一个图上绘制,或者是说以子图的形式:

  1. 多个图形:书上的例子是非常简单的,我改了改:

就是一张图片上面显示两个或者两个以上的函数图像:

x=np.linspace(0,2*np.pi,100)
y=np.sin(x)
z=np.tan(x)
h=np.cos(x)
plt.ion()
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(x,y,"b-")
ax.plot(x,z,"r--")
ax.plot(x,h,"g-.")
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_title("trigonometric function")
fig.show()
turtle.done()

图九:一张图片显示多个函数

但是,你有没有发现,几个叠在一起不好看啊,而且cos那个,emm,看不清,而且我故意没有加示例,整个图像看起来很不舒服,这在数据可视化中让人很难受,那就下一步,多个fig来搞:

  1. 代码和上面的差不多,就是把fig搞了三个

图十:多幅图片显示

这三张fig输出之后,是叠在一块的,得手动给分开,这下清晰了,但是,麻烦不说,对比起来也不好对比,那怎么办呢,继续下一步,一个fig中用多个子图显示:

  1. 多个子图显示和前面的基础代码是一样的,但是,只有一个fig:


x=np.linspace(0,2*np.pi,100)
y=np.sin(x)
z=np.tan(x)
h=np.cos(x)
l=np.exp(-x*2*np.pi)
plt.ion()
fig=plt.figure()
ax=fig.add_subplot(2,2,1)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_title("sin")
ax.plot(x,y,"b-")
ax1=fig.add_subplot(2,2,2)
ax1.set_xlabel("x")
ax1.set_ylabel("z")
ax1.set_title("tan")
ax1.plot(x,z,"r-")
ax2=fig.add_subplot(2,2,3)
ax2.plot(x,h,"g-"),
ax2.set_xlabel("x")
ax2.set_ylabel("h")
ax2.set_title("cos")
ax4=fig.add_subplot(2,2,4)
ax4.plot(x,h,"y-"),
ax4.set_xlabel("x")
ax4.set_ylabel("l")
ax4.set_title("exp(-x*2*pi)")
fig.suptitle("some functuions")
fig.show()
turtle.done()
#注意:这里的代码中(2,2,x)他实际上说的是总共2*2张图片,x是第几张。

图十一:组合子图输出

这下清晰好看了吧,可视化的目标也就达成了,好了,二维的就学到这里了,明天开始学习三维的绘图。

Python科学计算:绘图2相关推荐

  1. Python 科学计算和绘图

    转自:http://python.jobbole.com/87471/ 原文出处: 達聞西    给深度学习入门者的Python快速教程 基础篇 numpy和Matplotlib篇 本篇部分代码的下载 ...

  2. python科学计算基础教程pdf下载-python科学计算 第二版 PDF 下载

    相关截图: 资料简介: 本书详细介绍Python科学计算中最常用的扩展库NumPy.SciPy.matplotlib.Pandas.SymPy.TTK.Mayavi.OpenCV.Cython,涉及数 ...

  3. python 科学计算设计_《Python科学计算-(第2版)》怎么样_目录_pdf在线阅读 - 课课家教育...

    第1章 Python科学计算环境的安装与简介 1 1.1 Python简介 1 1.1.1 Python 2还是Python 3 1 1.1.2 开发环境 2 1.1.3 集成开发环境(IDE) 5 ...

  4. python 科学计算三维可视化笔记(第三周 高级进阶)

    python 科学计算三维可视化笔记 第三周 高级进阶 python 科学计算三维可视化笔记 第三周 高级进阶 一.Mayavi 入门 1. Mayavi 库的基本元素 2. 快速绘制实例 3. Ma ...

  5. Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)

    Python科学计算库核心知识点总结_代码篇(ML/DL依赖语法)                                                                    ...

  6. python科学计算实验2

    1. 以"populations.npz"为素材,完成(a).(b)题目的要求.(本题要求在绘图之前,先进行数据处理:删去全为"nan"的行,然后按年份&quo ...

  7. python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环

    展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...

  8. python123计算分段函数_Python 专题四 python 科学计算

    一.目录 第1章 软件包的安装和介绍 1 11 Python简介 1 12 安装软件包 2 121 Python(x,y) 2 122 Enthought Python Distribution (E ...

  9. 无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages)

    无网络服务器(linux ubuntu),pip安装python科学计算所有需要包(packages) # 在windows上打开anaconda,进入环境tab页,在base环境处单击,然后点开te ...

  10. 目前比较流行的Python科学计算发行版

    经常有身边的学友问到用什么Python发行版比较好? 其实目前比较流行的Python科学计算发行版,主要有这么几个: Python(x,y) GUI基于PyQt,曾经是功能最全也是最强大的,而且是Wi ...

最新文章

  1. 【2781】二分练习 sdutOJ
  2. 从程序员到项目经理,没有捷径可走
  3. 哈工大理论力学第八版电子版_理论力学哈工大第八版1第六章思考题课后题
  4. Jar包部署-设置打包方式为jar
  5. ActiveMQ点对点通讯,生产者-消费者
  6. oracle 自增1,oracle自增无法从1开始
  7. php 输出01,php基础01_thinkphp输出Hello World-Go语言中文社区
  8. [css] css3和css2的区别是什么?
  9. MySQL存储过程中的循环怎么写
  10. 如何安装和使用纯文本编辑器 vi/vim
  11. 子程序入口参数是什么_三菱FX PLC | 什么是中断服务?没事多看几遍
  12. 一名高校老师的观点:高考志愿该怎么填
  13. java for 下标_java中foreach语句如何获取数组下标
  14. (C)输入一个字符串(串长不超过60),删除字符串中所有的空格符
  15. 关于移动硬盘插入后无显示的问题
  16. 【老生谈算法】matlab实现遗传算法选取最优参数——遗传算法
  17. SU-03离线语音模块的配置使用
  18. Indian_pines 高光谱图像数据集的处理(1)
  19. 魔兽世界你无法向该服务器发邮件什么意思,魔兽世界:对于怀旧服无法上线的3大原因!暴雪是这样解释的!...
  20. OkHttp3设置Content-Type

热门文章

  1. MySQL简介——认识MySQL
  2. 【自动写代码】Quokka.js是一款通过注释实时生成代码的插件,该插件安装在vscode工具上面,但是需要激活才能使用
  3. jackson的readValue和convertValue方法
  4. 好久不联系的朋友,我不知道要用什么理由关心你的生活
  5. ubuntu防火墙配置
  6. tensorflow训练yolov3模型(检测雪人为例,自己的数据和标签,windows环境)
  7. ubuntu防火墙常用命令
  8. Ubuntu安装FLTK详细过程
  9. linux socket 混杂模式,设置混杂模式的例子
  10. spring boot校园管理系统 毕业设计-附源码021104