数据可视化
-
数据可视化:将数据以图表的形式表示,数据视觉表现形式的科学技术研究
-
数据可视化的作用:数据分析的最终目标、数据探索的重要手段
常见图表类型
- 折线图:以折线方式反应数据变化趋势
- 直方图:利用方块大小反应数据差异
- 条形图:显示各个项目之间的比较情况,和直方图有类似的作用
- 饼图:显示各数据的百分比情况
- 散点图:显示若干数据系列中各数值之间的关系
- 箱型图:用来显示一组数据分散情况的统计图,在识别异常值方面有一定的优越性
matplotlib
m a t p l o t l i b , 风 格 类 似 M a t l a b 的 基 于 P y t h o n 的 图 表 绘 图 系 统 。 \color{red}{matplotlib,风格类似 Matlab 的基于 Python 的图表绘图系统。} matplotlib,风格类似Matlab的基于Python的图表绘图系统。是 P y t h o n \color{black}{Python} Python最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。
import matplotlib.pyplot as plt
简单绘图
-
matplotlib中,pyplot默认产生一个Figure对象,可以理解为一张空白的画布,用于容纳图表的各种组件
- plot函数:一个简单的绘图函数
plt.plot(np.arange(10))
2. figure函数:创建新的空白画布,或使用当前的活动画布
plt.figure(facecolor='green',figsize=(3,4))
ax = plt.plot(np.arange(50))
plt.show()
figure函数参数 |
描述 |
num |
Figure对象的编号或名称 |
figsize |
画布的尺寸,inch,默认(6.4, 4.8) |
dpi |
分辨率,像素/inch,默认100 |
facecolor |
画布背景颜色 |
edgecolor |
图形边框颜色 |
- subplot函数:Figure对象允许划分为多个绘图区域,每个区域
都有自己的坐标系,成为子图,subplot函数可以创建单个子图。
plt.subplot(nrows, ncols, index, **kwargs)
ls = range(10)
plt.subplot(211)
plt.plot(ls)
plt.subplot(223)
plt.plot(ls)
plt.subplot(224)
plt.plot(ls)
plt.show()
4. 根据索引创建子图
num = np.arange(100)
fig, axes = plt.subplots(2, 2)
ax1 = axes[0, 0]
ax2 = axes[0, 1]
ax3 = axes[1, 0]
ax4 = axes[1, 1]
ax1.plot(num, num)
ax2.plot(num, -num)
ax3.plot(num, num**2)
ax4.plot(num, np.log(num))
plt.show()
标签和图例
-
光有图还不够,我们还应该在图的基础上添加相应的标题、标签和注释等,这样才能够使图表更加立体,数据更加丰富、饱满。
函数 |
描述 |
title |
设置当前图片的标题 |
xlabel,ylabel |
设置x轴、y轴的名称 |
xticks,yticks |
设置x轴、y轴的刻度与标签 |
xlim,ylim |
设置x轴、y轴的范围 |
legend |
设置图例 |
legend函数只能plot函数之后设置,其他的可前可后
data = np.arange(10)
plt.title("Title")
plt.xlabel("X")
plt.ylabel("Y")
plt.xticks([0,2,4,5,8,10])
plt.yticks([0,100,300,600])
plt.plot(data,data**2)
plt.plot(data,data**3)
plt.legend(["y=x^2","y=x^3"])
plt.show()
颜色字符 |
描述 |
y,g,b,r… |
英文开头首字母小写 |
‘#008000’ |
RGB某颜色 |
风格字符 |
描述 |
‘-’ |
实线 |
‘- -’ |
破折线 |
‘-.’ |
点划线 |
‘:’ |
虚线 |
(’ ‘’ ') |
无线条 |
标记字符 |
描述 |
标记字符 |
描述 |
标记字符 |
描述 |
‘.’ |
点标记 |
‘,’ |
像素标记(极小点) |
‘o’ |
实心圈标记 |
‘v’ |
倒三角标记 |
‘s’ |
实心方形 |
‘p’ |
实心五角 |
‘*’ |
星型 |
‘^ > <’ |
上,右,左三角标记 |
‘1 2 3 4’ |
下,上,左,右花三角标记 |
‘h H’ |
横,竖六边形 |
‘+’ |
十字 |
‘x’ |
x标记 |
‘D’ |
菱形 |
‘d’ |
瘦菱形 |
‘|’ |
垂直线 |
a=np.arange(10)
plt.plot(a,a*1.5,'go-',a,a*2.5,'rx--',a,a*3.5,'bv-.',a,a*4.5,'y:')
plt.show()
中文显示
-
pyplot并不默认支持中文显示,需要rcParams修改字体实现
rcParams |
描述 |
‘font.family’ |
显示字体的名字 |
‘SimHei’ |
中文黑体 |
‘LiSu’ |
中文隶书 |
‘Kaiti’ |
中文楷体 |
‘FangSong’ |
中文仿宋 |
‘YouYuan’ |
中文幼圆 |
‘STSong’ |
华文宋体 |
— |
— |
‘font.style’ |
字体风格 |
‘normal’ |
正常 |
‘italic’ |
斜体 |
– |
– |
‘font.size’ |
字体大小 |
整数字号或者’large’,‘x-small’ |
|
- 第一种方法,使用使用rcParams修改字体为中文字体
matplotlib.rcParams['font.family']='SimHei'
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.show()
2. 第二种方法,在有中文输出的地方,增加属性fontproperties
a = np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=20)
plt.ylabel('纵轴:振幅',fontproperties='Kaiti',fontsize=10)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
添加注释和文本
a = np.arange(0.0,5.0,0.02)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=20,color='blue')
plt.ylabel('纵轴:振幅',fontproperties='Kaiti',fontsize=10)
plt.title(r'正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
plt.text(2,1,r'$\mu=100$',fontsize=15)
plt.annotate(r'$\mu=100$',xy=(4,1),xytext=(5,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))
plt.axis([-1,6,-2,2])
plt.grid(True)
plt.show()
保存图片
plt.savefig('test.png')