科学计算和可视化
一、numpy&matplotlib读书笔记。
(一)numpy库的笔记:
简述:numpy 库处理的最基础数据类型是由同种元素构成的多维数组(ndarray),简称“数组”。 数组中所有元素的类型必须相同,数组中元素可以用整数索引,序号从0开始。ndarray 类型的维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。一维数组的秩为1,二维数组的秩为2,二维数组相当于由两个一维数组构成。
1.创建数组函数:
2.查看ndarray 类型有一些基本属性
3.ndarray 类的形态操作方法
4.ndarray 类的索引和切片方法
5.numpy 库的算术运算函数
6.numpy 库的比较运算函数
7.numpy 库的其他运算函数
(二)matplotlib的笔记:
简述:matplotlib 库由一系列有组织有隶属关系的对象构成,这对于基础绘图操作来说显得过于复杂。因此,matplotlib 提供了一套快捷命令式的绘图接口函数,即pyplot 子模块。pyplot 将绘图所需要的对象构建过程封装在函数中,对用户提供了更加友好的接口。pyplot 模块提供一批预定义的绘图函数,大多数函数可以从函数名辨别它的功能。matplotlib.pyplot 库的plt 子库提供了一批操作和绘图函数,每个函数代表对图像进行的一个操作,比如创建绘图区域、添加标注或者修改坐标轴等。 这些函数采用plt.<b>()形式调用,其中<b>是具体函数名称。
1.plt 库的绘图区域函数
2.使用figure()函数创建一个全局绘图区域,并且使它成为当前的绘图对象,figsize参数可以指定绘图区域的宽度和高度,单位为英寸。鉴于figure()函数参数较多,这里采用指定参数名称的方式输入参数plt.figure(figsize=(8,4))
3.subplot()都用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows 行和ncols 列,并根据先行后列的计数方式在plot_number 位置生成一个坐标系,实例代码如下,三个参数关系如图10.3 所示。其中,全局绘图区域被风割成3x2 的网格,其中,在第4 个位置绘制了一个坐标系。
4.axes()默认创建一个subplot(111)坐标系,参数rec = [left,bottom,width,height]中四个变量的范围都为[0,1],表示坐标系与全局绘图区域的关系;axisbg 指背景色,默认为white。
5.plt 库的读取和显示函数
6.plt 库的基础图表函数
7.plt 库的基础图表函数
8.plt 库的基础图表函数
9.plt 库的坐标轴设置函数
10.plt 库的标签设置函数
11.plt 库的标签设置函数
12.plt 库的区域填充函数
13.字体表
'font.family' | 用于显示字体的名字 |
'font.style' | 字体风格,正常'normal'或斜体'italic' |
'font.size' | 字体大小,整数字号或者'large','x-small' |
二、Python123成绩的雷达图。
1 #上一周考试的每一道题得分情况 2 import numpy as np 3 import matplotlib.pyplot as plt 4 import matplotlib 5 matplotlib.rcParams['font.family']='SimHei' 6 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 7 labels = np.array(['第一题','第二题','第三题','第四题','第五题','第六题']) 8 nAttr = 6 9 data = np.array([10,10,0,10,10,10]) 10 angles = np.linspace(0,2*np.pi,nAttr, endpoint=False) 11 data = np.concatenate ((data,[data[0]])) 12 angles = np.concatenate((angles,[angles[0]])) 13 fig = plt.figure(facecolor="white") 14 plt.subplot(111, polar= True) 15 plt.plot (angles ,data, 'bo-' ,color ='g' ,linewidth=2) 16 plt.fill (angles , data, facecolor ='g' , alpha=0.25) 17 plt.thetagrids (angles*180/np.pi, labels) 18 plt.figtext(0.52, 0.95,'上周考试每道题得分雷达图',ha='center') 19 plt.grid (True) 20 plt.savefig( '成绩图.JPG') 21 plt.show ()
三、自定义手绘风。
1 #shouhui.py 2 from PIL import Image 3 import numpy as np 4 vec_el = np.pi/2.2 5 vec_az = np.pi/4 6 depth = 100 7 im = Image.open('F:\荷花.jpg').convert('L') 8 a =np.asarray (im).astype('float') 9 grad =np.gradient (a) 10 grad_x,grad_y = grad 11 grad_x = grad_x*depth/100 12 grad_y = grad_y*depth/100 13 dx = np.cos (vec_el) *np.cos(vec_az) 14 dy = np.cos (vec_el) *np.sin(vec_az) 15 dz = np. sin(vec_el) 16 A = np.sqrt(grad_x**2 + grad_y**2 + 1) 17 uni_x=grad_x/A 18 uni_y = grad_y/A 19 uni_z = 1/A 20 a2 = 255* (dx*uni_x + dy*uni_y + dz*uni_z) 21 a2 = a2.clip(0,255) 22 im2 =Image.fromarray (a2. astype('uint8')) 23 im2.save('荷花手绘.jpg')
四、绘制感兴趣的数学规律。
1 import numpy as np 2 import pylab as pl 3 import matplotlib.font_manager as fm 4 import matplotlib 5 t=np.arange(0.0,2.0*np.pi,0.01) 6 s=np.sin(t) 7 z=np.cos(t) 8 pl.plot(t,s,label='正弦') 9 pl.plot(t,z,label='余弦') 10 pl.xlabel('x-变量',fontproperties='SimHei',fontsize=18) 11 pl.ylabel('y-正弦余弦函数值',fontproperties='SimHei',fontsize=18) 12 pl.title('sin-cos函数图像',fontproperties='SimHei',fontsize=24) 13 pl.show()