可视化学习

一、matplotlib读书笔记

1、导入模块:import matplotlib.pyplot as plt

2、定义图像窗口:figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True) 

num:编号或名称

figsize:画布的大小

dpi:像素

facecolor:画布颜色

edge:边框颜色

frameom:是否显示边框

3、画图:plt.plot(x, y)

4、定义坐标轴范围:plt.xlim()、plt.ylim()

5、定义坐标轴名称:plt.xlabel()、plt.ylabel()

6、定义坐标轴刻度及名称:plt.xticks()、plt.yticks()

7、设置边框颜色

使用plt.gca()获取当前坐标轴信息。使用.spines设置边框:右侧边框;使用.set_color设置边框颜色:默认白色; 使用.spines设置边框:上边框;使用.set_color设置边框颜色:默认白色;

c= plt.gca()

c.spines['right'].set_color('none')
c.spines['top'].set_color('none')

8、调整刻度位置:ax.xaxis.set_ticks_position()、ax.yaxis.set_ticks_position()

所有位置:top,bottom,both,default,none

9、调整边框(坐标轴)位置:ax.spines[ ].set_position()

位置所有属性:outward,axes,data

10、添加图例

(1)plt.legend(loc):

loc有多种参数:'best' ,'upper right' , 'upper left', 'lower left' , 'lower right' , 'right' , 'center left' , 'center right' , 'lower center' , 'upper center' , 'center' 

(2)使用handles标注(注意逗号):

a, = plt.plot(x, y1, label='linear line')
b, = plt.plot(x, y2, color='red', linewidth=1.0, linestyle='--', label='square line')
plt.legend(handles=[a,b,], labels=['up','down'], loc='best')

 

11、画点:plt.scatter()

plt.scatter([x0, ], [y0, ], s=50, color='b')

12、添加标注:plt.annotate()

xytexxt是对标注位置的描述,xytext=(左负右正, 上负下正)

arrowprops是对图中箭头类型和箭头弧度的设置,需要用 dict 形式传入:arrowprops=dict(arrowstyle, connectionstyle))

13、添加注释:plt.text()

text 的内容其中空格需要用到转字符 \ ,fontdict 设置文本字的大小和颜色。

plt.text(x,y,r'$内容$',fontdict={'size':number,’color‘=’ ‘})

 

二、制作雷达图

代码如下 :

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 
 4 time = ["First", "Second", "Third", "Fourth", "Fifth","Sixth"]
 5 grade= [100,98,39,82,73,69,100]
 6 plt.figure(figsize = (10, 6))
 7 plt.subplot(polar = True)
 8 theta = np.linspace(0, 2 * np.pi, len(grade))
 9 lines,labels = plt.thetagrids(range(0, 360, int(360/len(time))), (time))
10 
11 plt.plot(theta,grade)
12 plt.fill(theta,grade, 'r')
13 plt.legend(labels=('grade'), loc = 'best',frameon = True)
14 plt.title(" zhENie Grade")
15 plt.show()
成绩雷达图

 

三、自定义手绘

代码如下:

 1 from PIL import Image
 2 import numpy as np
 3 el=np.pi/2.2
 4 az=np.pi/4
 5 depth=10
 6 im=np.array(Image.open("D:\\python\\python文件\\house.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(el)*np.cos(az)
13 dy=np.cos(el)*np.cos(az)
14 dz=np.sin(el)
15 A=np.sqrt(grad_x**2+grad_y**2+1.0)
16 uni_x=grad_x/A
17 uni_y=grad_y/A
18 uni_z=1.0/A
19 a2=255*(dx*uni_x+uni_y*dy+dz*uni_z)
20 a2=a2.clip(0,255)
21 im2=Image.fromarray(a2.astype('uint8'))
22 im2.save("D:\\python\\python文件\\househand.png")
手绘

图像对比

before:

after:

四、绘画数学方程

绘画z=x*x+y*y

代码如下:

 1 from matplotlib import pyplot as plt
 2 import numpy as np
 3 from mpl_toolkits.mplot3d import Axes3D
 4 
 5 fig = plt.figure()
 6 pic = Axes3D(fig)
 7 X = np.arange(-2, 2, 0.1)
 8 Y = np.arange(-2, 2, 0.1)
 9 X, Y = np.meshgrid(X, Y)
10 Z = X**2 + Y**2
11 pic.plot_surface(X, Y, Z)
12 plt.show()
z=x*x+y*y

运行结果如下:

 

posted @ 2020-05-06 21:42  zhENie  阅读(290)  评论(0)    收藏  举报