Python数据分析——Matplotlib数据可视化基础(一)
思维导图:
图像的数组表示
图像的RGB色彩模式
- RGB三个颜色通道的变化和叠加得到各种颜色,其中R红色,取值范围,0-255
G绿色,取值范围,0-255
B蓝色,取值范围,0-255。RGB形成的颜色包括了人类示例所能感知的所有颜色。
PIL库
- PIL(Python Image Library):是一个具有强大图像处理能力的第三方库
- 引入图像类:
from PIL import Image
- Image是PIL库中代表一个图像的类(对象)
图像的数组表示
- 图像是一个由像素组成的二维矩阵,每个元素是一个RGB值
例:
from PIL import Image
import numpy as np
im = np.array(Image.open("C:/Users/sssss/.spyder-py3/123.jpg"))
print(im.shape,im.dtype)
图像的变换
- 读入图像后,获得像素RGB值,修改后保存为新的文件
例:
from PIL import Image
import numpy as np
a = np.array(Image.open("C:/Users/sssss/.spyder-py3/123.jpg"))
print(a.shape,a.dtype)
b = [255,255,255] -a
im = Image.fromarray(b.astype('uint8'))
im.save("C:/Users/sssss/.spyder-py3/1234.jpg")
将彩色照片变成灰度图片:
from PIL import Image
import numpy as np
a = np.array(Image.open("C:/Users/sssss/.spyder-py3/123.jpg").convert('L'))
b = 255 - a
im = Image.fromarray(b.astype('uint8'))
im.save("C:/Users/sssss/.spyder-py3/1234.jpg")
Matplotlib库的介绍
- Matplotlib库由各种可视化类构成,内部结构负责,受Matlab启发
- Matplotlib.pyplot是绘制各类可视化图形的命令子库,相当于快捷方式。
import matplotlib.pyplot as plt
- plt:引入模块的别名
添加画布内容
存与展示图形
例1:
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("grade")
plt.savefig('test',dpi=600) #PNG文件
plt.show()
- plt.savefig():将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
例2:
plt.plot([0,2,4,6,8],[3,1,4,5,2])
plt.ylabel("grade")
plt.axis([-1,10,0,6])
plt.show()
- plt.plot(x,y):当有两个以上参数时,按照x轴和y轴顺序绘制数据点
pyplot的plot()函数
plt.plot(x,y,format_string,**kwargs)
- x:x轴数据,列表或数组,可选
- y:y轴数据,列表或数组
- format_string:控制曲线的格式字符串,可选由颜色字符、风格字符和标记字符组成
- **kwargs:第二组或更多(x,y,format_string)
- color:控制颜色,color=‘black’
- linestyle:线条风格,linestyle=‘dashed’
- marker:标记风格,marker=‘0’
- markerfacecolor:标记颜色,markerfacecolor=‘blue’
注:当绘制多条曲线时,各条曲线的x不能省略
例:
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(10)
plt.plot(a,a*1.5,'go-',a,a*2.5,'rx',a,a*3.5,'*',a,a*4.5,'b-,')
plt.show()
pyplot的中文显示
- 第一种:pyplot并不默认支持中文显示,需要rcParams修改字体实现
例1:
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' #黑体
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.savefig('test',dpi=600)
plt.show()
- rcParams属性:
例2:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='STSong'
matplotlib.rcParams['font.size']=20
a = np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
- 第二种方法:在有中文输出的地方,增加一个属性:fontproperties(建议使用)
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=20)
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=20)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
pyplot子绘图区域
plt.subplot2grid(GrindSpec,CurSpec,colspan=1,rowspan=1)
例:
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(3,3)
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])