Python科学计算:绘图1.二维图形

作者开始使用VScode进行代码编写,认为它更适合于Python绘图任务,而不是Pycharm。文章介绍了Python绘图的重要性,并以Matplotlib为例,详细讲解了如何绘制图形,包括简单的波形图和傅里叶级数部分和的图表。文中还提到了面向对象的Matplotlib使用方法,以及如何调整图像的样式和颜色。
摘要由CSDN通过智能技术生成

昨天事情有点多,没来得及写,今天写,从今天开始,我所有的代码全部用VScode写,因为我发现,用Pycharm写这些,真的是大材小用了,所以,就简单一些,直接用VScode来写。

今天开始学习绘图,相信看过我之前fortran学习系列的朋友都知道,那时候我就已经在用python作图了,但是,审美问题,图做的太难看了,但是,不管是论文写作,还是其他工作,图像都以其简单明了易懂的特点为人所接受,作用非常大的,漂亮的图像会给人非常好的印象,所以,作图还是很重要的,因此,图像才作为一个重点被Python科学计算作为一个独立的篇章来讲解。

今天就来学习图形的绘制

讲到python绘图,始终绕不开一个包:Matplotlib,这个c++也有扩展,配置好之后就嫩用c++直接调出函数来绘图,特方便的,然后,先把matplotlib的官方文档地址给大家贴上,毕竟书上讲的只是实用性,不会涉及太多的函数。所以,还是要多读读官方文档的:教程 — Matplotlib 3.7.1 文档

ok废话不多说了,直接开始吧:

绘制一个很简单的波形:Ricker子波:代码用的是(3条消息) Python实现雷克子波画图(时间域)_python 生成不同相位的雷克子波_某崔同学的博客-CSDN博客里的,然后看一看做出的图像的效果:

图一:雷克子波图像

这会注意哈,雷克子波和那个小波变换用到的墨西哥帽波形非常像,但是别搞混了。

来,跟着书上的敲一个:

import matplotlib.pyplot as plt
import numpy as np
import math
x=np.linspace(-np.pi,np.pi,101)
y=np.sin(x)+np.sin(3*x)/3.0
plt.plot(x,y,"r-")
plt.xlabel("x")
plt.ylabel("y")
plt.title("A Simple Image")
plt.show()
plt.savefig("foo.pdf")

图像:

图二:书上的第一个小例子

面向对象的Matplotlib:

这个包的功能远远比你想象的强大得多,他的实现方式是使用嘞的面向对象的方式;

一个matplotlib,他是有两个很基础的类:figure、axes,前者是画布,后者是轴,举一个简单的例子,创建两个figure:

fig1=plt.figure()
fig2=plt.figure()
# 创建了两个实例,fig1,fig2
# 假如说,我们要在fig2里面画上多幅子图
ax=fig2.add_subplot(2,3,5)
# 就是画上两行三列五个实例,如果说数字都小于10的话,可以直接把逗号给去掉,
# 但我不建议,因为我经常出错
# 好,重写图二的代码:
fig3=plt.figure()
ax=fig3.add_subplot(1,1,1)
ax.plot(x,y)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_title("A Simple Image")
fig3.show()
fig3.savefig("food.jpg")

这有个问题,就是,他弹窗之后,就立即消失了,但是,可以打开保存的图片food去看:

图三:已经保存的图片

好了,这下,一些基础的就讲完了,这下就是调优了,因为你不可能就把这么一幅图给贴在论文里面,你得调色,调背景颜色这一系列的,首先,先来看曲线的样式和颜色:

字符

颜色

字符

颜色

b

蓝色(默认)

m

紫红色

g

绿色

y

黄色

r

红色

k

黑色

c

青色

w

白色

然后是线条样式:

字符

颜色

字符

颜色

字符

颜色

-

实线

-.

点划线

o

o

--

虚线

点线

*

*

然后就是线条的宽的,测量单位是打印机的点(浮点值),linewidth=,或者你就直接写个lw=:

图四:o形

其实,上面的o和*,这俩是用的比较多的,所以我才把他们写到线条样式去了,实际上,他们是标记样式,而且,标记样式有很多:

标记

形状

标记

形状

.

点(默认)

^

上三角

o

圆圈

<

左三角

*

星号

>

右三角

+

加号

n

正方形

x

字符x

p

五边形

v

下三角

h

六边形

这些就是你用来做标记,做对比的时候,会用的多一些,然后,你可以直接“color*”这种方式来绘制,也可以用markeredgecolor来设置颜色,markedgewidth来设置宽度

行了,今天结束的话,就用书上的傅里叶级数部分和来结束:

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-np.pi,np.pi,101)
f=np.ones_like(x)
f[x<0]=-1
y1=(4/np.pi)*(np.sin(x)+np.sin(3*x)/3.0)
y2=y1+(4/np.pi)*(np.sin(5*x)/5.0+np.sin(7*x)/7.0)
y3=y2+(4/np.pi)*(np.sin(9*x)/9.0+np.sin(11*x)/11.0)
plt.ion()
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.plot(x,f,'b-',lw=2,label="f(x)")
ax.plot(x,y1,'c--',lw=2,label="two terms")
ax.plot(x,y2,'r-.',lw=2,label="four terms")
ax.plot(x,y3,'b:',lw=2,label="six terms")
ax.legend(loc="best")
ax.set_xlabel("x",style="italic")
ax.set_ylabel("y",style="italic")
ax.set_title("Fourier",size=16,weight="bold")
fig.savefig("fourier.jpg")

图五:傅里叶级数部分和

好了,今天就到这里吧,每天再学习极坐标绘图

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值