数据分析-03

2018-10-14  本文已影响0人  博士伦2014

第三神器matplotlib库

1. 图片读取

pyplot.imread(path)
path指定图片地址
返回数组,彩图是三维数组,灰度图是二维数组
pyplot.imshow(image)
image指定要展示的图片
pyplot.show()
展示图片

2. 绘图

导入:import matplotlib.pyplot as plt

2.1 单图

plt.plot(x, y)

2.2 多图

plt.plot(x1, np.sin(x1))
plt.plot(x2, np.sin(x2))
plt.plot(x1, np.sin(x1), x2, np.sin(x2))

2.3 子画布

plt.figure(figsize=(4,4))指定画布大小
# 创建一个子画布,把原来的上下分成2,左右分成3,占用第三个

axes1 = plt.subplot(2,2,1)
axes2 = plt.subplot(2,2,2)
axes3 = plt.subplot(2,2,3)
axes4 = plt.subplot(2,2,4)

使用子画布调用plot进行绘图

2.4 网格线

plt.grid(axis,color,linewidth,alpha)
axis指定网格添加的轴线,默认是都添加
color指定网格颜色
linewidth指定线宽
alpha指定透明度

2.5 坐标轴线

plt.axis(set)
set指定轴线样式,equal|off
plt.axis([-2, 2, -2, 2]) # [x起,x末,y起,y末]

2.6 坐标轴标签

plt.xlabel | ylabel(name, color, fonsize,rotation)
name指定轴线名字
color指定颜色
fonsize字体大小
rotation指定旋转角度,默认90°

2.7 画布标题

plt.title('sin(x)', loc='left', color='blue', fontsize=20, rotation=20)

2.8 图例
2.9 轴线刻度

plt.xticks()和plt.yticks()方法
需指定刻度值和刻度名称 plt.xticks([刻度列表],[名称列表])
支持fontsize、rotation、color等参数设置

2.10 风格样式plt.plot()
plt.plot(x,y,
marker='h',              # 设置点型
markersize=20,           # 设置点型大小
markeredgecolor='red',   # 点型边线颜色
markeredgewidth=5,       #  边线宽度
markerfacecolor='green') #点型填充色
2.11 不同风格设置方式

3. 颜色映射

from matplotlib.colors import ListedColormap
cmap0 = ListedColormap(['red','green','blue'])

4. 2D图像

plt.pie(data, labels=['1','2','3','4'], labeldistance=0.5, autopct='%1.1f%%', pctdistance=0.8, explode=[0.2,0,0,0], colors=['red','green','blue','orange'], shadow=True, startangle=90)

5. 图形内饰

6. 3D图

导入:from mpl_toolkits.mplot3d.axes3d import Axes3D

x = np.linspace(0,10,101)
y = np.linspace(0,10,101)
X,Y = np.meshgrid(x,y)
Z = np.sin(X)-np.cos(Y)
plt.figure(figsize=(10,6))    # 设置画布
axes = plt.subplot(projection='3d')    # 指定3d图
p = axes.plot_surface(X,Y,Z,cmap='rainbow')    # 绘图,添加颜色渲染
plt.colorbar(p,shrink=0.5)    # 添加色彩条

关于图片处理scipy库

1. 降噪

思路:导入图片,查看图片的形状,比较彩图和黑白图,其实就是对图片的数组进行操作,彩色图片是三维的rgb,黑白图是二维的,相当于将一组rgb转换成一个值,

1.1 中值滤波

原理:通过调整范围内的平均值,进行处理
ndimage.median_filter(input, size=None, footprint=None, output=None, mode='reflect', cval=0.0, origin=0)
input指定传入的图片数组
size指定选取范围的大小

1.2 高斯滤波

原理:通过加权平均数进行处理
ndimage.gaussian_filter(input, sigma, order=0, output=None, mode='reflect', cval=0.0, truncate=4.0)
input指定传入的图片数组
sigma指定范围

1.3 维也纳滤波

原理:选定范围,使得方差尽可能小,通过调整方差进行处理
from scipy.signal import wiener
wiener(im, mysize=None, noise=None)
im指定传入的图片数组
mysize指定范围
效果排序:中值滤波 < 高斯滤波
高斯滤波(近景好),维也纳滤波(远景好)

1.4 傅里叶变换

理解:将描述值的值变成描述变化的值
思路:转为变化值,分析变化的值,将大的转换为0,再恢复描述值
from scipy.fftpack import fft2,ifft2
fft2(x, shape=None, axes=(-2, -1), overwrite_x=False)x指定描述值的值
ifft2(x, shape=None, axes=(-2, -1), overwrite_x=False)

2. 添加噪点

思路:生成一个图像般shape的随机图,然后进行加和处理
import scipy.misc as misc
face = misc.face(gray=True)
plt.imshow(face,cmap='gray')
noise = np.random.randint(0,100,size=face.shape)
noise_face = face + noise
plt.imshow(noise_face,cmap='gray')

3. 灰度处理

4. 图片基本处理

导入:import scipy.ndimage as ndimage

5. 绘图表

df.plot(x=None, y=None, kind='line', ax=None, subplots=False,
sharex=None, sharey=False, layout=None, figsize=None, 
use_index=True, title=None, grid=None, legend=True, style=None,
logx=False, logy=False, loglog=False, xticks=None, yticks=None, 
xlim=None, ylim=None, rot=None, fontsize=None, colormap=None,
table=False, yerr=None, xerr=None, secondary_y=False, sort_columns=False, **kwds)

kind:指定图表样式
'line' : 折线图,默认
'bar' : 柱形图
'barh' : 横向柱形图
'hist' : 直方图
'box' : boxplot
'kde' : 概率图
'density' : same as 'kde'
'area' : area plot
'pie' : pie plot
'scatter' : 散布图,必须注明columns,x和y
'hexbin' : hexbin plot

df.hist(column=None, by=None, grid=True, xlabelsize=None, 
xrot=None, ylabelsize=None, yrot=None, ax=None, sharex=False,
 sharey=False, figsize=None, layout=None, bins=10, **kwds)
上一篇下一篇

猜你喜欢

热点阅读