python数据分析————matplotlib数据可视化

数据可视化

  • 数据可视化:将数据以图表的形式表示,数据视觉表现形式的科学技术研究

  • 数据可视化的作用:数据分析的最终目标、数据探索的重要手段

常见图表类型

  • 折线图:以折线方式反应数据变化趋势
  • 直方图:利用方块大小反应数据差异
  • 条形图:显示各个项目之间的比较情况,和直方图有类似的作用
  • 饼图:显示各数据的百分比情况
  • 散点图:显示若干数据系列中各数值之间的关系
  • 箱型图:用来显示一组数据分散情况的统计图,在识别异常值方面有一定的优越性

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 的图表绘图系统。} matplotlibMatlabPython P y t h o n \color{black}{Python} Python最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。

  • 导入库
import matplotlib.pyplot as plt

简单绘图

  • matplotlib中,pyplot默认产生一个Figure对象,可以理解为一张空白的画布,用于容纳图表的各种组件
  1. plot函数:一个简单的绘图函数
plt.plot(np.arange(10))

python数据分析————matplotlib数据可视化_第1张图片
2. figure函数:创建新的空白画布,或使用当前的活动画布

plt.figure(facecolor='green',figsize=(3,4))
ax = plt.plot(np.arange(50))
plt.show()

python数据分析————matplotlib数据可视化_第2张图片

figure函数参数 描述
num Figure对象的编号或名称
figsize 画布的尺寸,inch,默认(6.4, 4.8)
dpi 分辨率,像素/inch,默认100
facecolor 画布背景颜色
edgecolor 图形边框颜色
  1. subplot函数:Figure对象允许划分为多个绘图区域,每个区域
    都有自己的坐标系,成为子图,subplot函数可以创建单个子图。
plt.subplot(nrows, ncols, index, **kwargs)
# 当nrows, ncols, index都小于10时可以简写
ls = range(10)
# 分成2*1的矩阵区域,占用编号为1的区域,即第1行的子图
plt.subplot(211)
plt.plot(ls)
# 分成2*2的矩阵区域,占用编号为3的区域,即第2行第1列的子图
plt.subplot(223)
plt.plot(ls)
# 分成2*2的矩阵区域,占用编号为4的区域,即第2行第2列的子图
plt.subplot(224)
plt.plot(ls)
plt.show()

python数据分析————matplotlib数据可视化_第3张图片
4. 根据索引创建子图

num = np.arange(100)
# 分成2*2的矩阵区域,返回子图数组axes
fig, axes = plt.subplots(2, 2)
ax1 = axes[0, 0]  # 根据索引[0,0]从Axes对象数组中获取第1个子图
ax2 = axes[0, 1]   # 根据索引[0,1]从Axes对象数组中获取第2个子图
ax3 = axes[1, 0]   # 根据索引[1,0]从Axes对象数组中获取第3个子图
ax4 = axes[1, 1]   # 根据索引[1,1]从Axes对象数组中获取第4个子图
# 在选中的子图上作图
ax1.plot(num, num)
ax2.plot(num, -num)
ax3.plot(num, num**2)
ax4.plot(num, np.log(num))
plt.show()

python数据分析————matplotlib数据可视化_第4张图片

标签和图例

  • 光有图还不够,我们还应该在图的基础上添加相应的标题、标签和注释等,这样才能够使图表更加立体,数据更加丰富、饱满。
函数 描述
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()

python数据分析————matplotlib数据可视化_第5张图片

  • plot函数为我们提供了很多的绘图风格
颜色字符 描述
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()

python数据分析————matplotlib数据可视化_第6张图片

中文显示

  • pyplot并不默认支持中文显示,需要rcParams修改字体实现
rcParams 描述
‘font.family’ 显示字体的名字
‘SimHei’ 中文黑体
‘LiSu’ 中文隶书
‘Kaiti’ 中文楷体
‘FangSong’ 中文仿宋
‘YouYuan’ 中文幼圆
‘STSong’ 华文宋体
‘font.style’ 字体风格
‘normal’ 正常
‘italic’ 斜体
‘font.size’ 字体大小
整数字号或者’large’,‘x-small’
  1. 第一种方法,使用使用rcParams修改字体为中文字体
matplotlib.rcParams['font.family']='SimHei'
plt.plot([3,1,4,5,2])
plt.ylabel("纵轴(值)")
plt.show()

python数据分析————matplotlib数据可视化_第7张图片
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()

python数据分析————matplotlib数据可视化_第8张图片

添加注释和文本

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)
# 添加文本,2,1表示文本坐标,fontsize表示字体大小
plt.text(2,1,r'$\mu=100$',fontsize=15)
# 添加注释,xy表示箭头点所在的坐标,xytext表示注释所在的坐标
# arrowprops表示箭头参数(shrink表示总长度的一部分,从两端“收缩)
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()

python数据分析————matplotlib数据可视化_第9张图片

保存图片

# 在show函数之前设置
plt.savefig('test.png')

你可能感兴趣的:(数据分析,python,python,数据分析,数据可视化,可视化,matplotlib)