1、numpy ,matplotlib的笔记:
2、python123成绩
1 import numpy as np 2 import matplotlib.pyplot as plt 3 4 # 中文和负号的正常显示 5 plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' 6 plt.rcParams['axes.unicode_minus'] = False 7 8 # 使用ggplot的绘图风格 9 plt.style.use('ggplot') 10 11 # 构造数据 12 values = [5,5,5,5,5,5,4] 13 feature = ['第一周','第二周','第三周','第四周','第五周','第六周','第七周'] 14 15 N = len(values) 16 # 设置雷达图的角度,用于平分切开一个圆面 17 angles=np.linspace(0, 2*np.pi, N, endpoint=False) 18 # 为了使雷达图一圈封闭起来,需要下面的步骤 19 values=np.concatenate((values,[values[0]])) 20 angles=np.concatenate((angles,[angles[0]])) 21 22 # 绘图 23 fig=plt.figure() 24 ax = fig.add_subplot(111, polar=True) 25 # 绘制折线图 26 ax.plot(angles, values, 'bo-', linewidth=2, label = '学号2019310143001') 27 # 填充颜色 28 ax.fill(angles, values, color='m',alpha=0.35) 29 30 # 添加每个特征的标签 31 ax.set_thetagrids(angles * 180/np.pi, feature) 32 # 设置雷达图的范围 33 ax.set_ylim(0,6) 34 # 添加标题 35 plt.title('ghh的成绩单') 36 37 # 添加网格线 38 ax.grid(True) 39 # 设置图例 40 plt.legend(loc = 'best') 41 42 # 显示图形 43 plt.show()
结果:
3、手绘:
1 from PIL import Image 2 import numpy as np 3 vec_el=np.pi/2.2 4 vec_az=np.pi/4 5 depth=10 6 im=Image.open('ooj.jpg').convert('L') 7 a=np.asarray(im).astype('float') 8 grad=np.gradient(a) 9 grad_x,grad_y=grad 10 grad_x=grad_x*depth/100 11 grad_y=grad_y*depth/100 12 dx=np.cos(vec_el)*np.cos(vec_az) 13 dy=np.cos(vec_el)*np.sin(vec_az) 14 dz=np.sin(vec_el) 15 A=np.sqrt(grad_x**2+grad_y**2+1.) 16 uni_x=grad_x/A 17 uni_y=grad_y/A 18 uni_z=1./A 19 a2=255*(dx*uni_x+dy*uni_y+dz*uni_z) 20 a2=a2.clip(0,255) 21 im2=Image.fromarray(a2.astype('uint8')) 22 im2.save('ddd.jpg')
原图:
结果: