Matplotlib数据可视化
一:Matplotlib绘图基础
Matplotlib: 第三方库,可以快速方便地生成高质量的图表
1.数据可视化
- 数据分析阶段:理解和洞察数据之间的关系
- 算法调试阶段:发现问题,优化算法
- 项目总结阶段:展示项目成果
2.Matplotlib库的安装和导入
安装
- Anaconda: 安装了anaconda之后,Matplotlib就已经被安装好了
- pip安装 pip install matplotlib
导入
- import matplotlib.pyplot as plt
3.Figure对象:创建画布
figure( num,figsize,dpi,facecolor,edgecolor,frameon )
- num:图形编号或名称,取值为数字/字符串。
- figsize:绘图对象的宽和高,单位为英寸。
- dpi:绘图对象的分辨率,缺省值为80。
- facecolor:背景颜色。
- edgecolor:边框颜色。
- frameon:表示是否显示边框。
4. subplot()函数:划分子图
subplot( 行数, 列数, 子图序号 )
- 当subplot()函数中的3个参数都小于10时,可以省略参数间的逗号,用一个3位数来表示
- 每个subplot()函数只创建一个子图。要创建4个子图,就需要4条语句
5.设置中文字体及字符显示
plt.rcParams [" font.sans-serif" ] = “SimHei”
- plt.rcParams:运行配置参数 :指定所绘制图表中的各种默认属性,是matplotlib中的全局变量
- [" font.sans-serif" ] 字体
中文字体 | 英文描述 | 中文字体 | 英文描述 |
---|---|---|---|
宋体 | SimSun | 楷体 | KaiTi |
黑体 | SimHei | 仿宋 | FangSong |
微软雅黑 | Microsoft | YaHei | 隶书 |
微软正黑体 | Microsoft | JhengHei | 幼圆 |
- 恢复标准默认配置 plt.rcdefaults( )
- 字符显示 plt.rcParams[’axes.unicode_minus’] = False
6.添加标题
添加全局标题 plt.suptitle ( 标题文字 )
- suptitle()函数的主要参数
参 数 | 说 明 | 默认值 |
---|---|---|
x | 标题位置的x坐标 | 0.5 |
y | 标题位置的y坐标 | 0.98 |
color | 标题颜色 | 黑色 |
backgroundcolor | 标题背景颜色 | 12 |
fontsize | 标题的字体大小 | |
fontweight | 字体粗细 | normal |
fontstyle | 设置字体类型 | |
horizontalalignment | 标题水平对齐方式 | center |
verticalalignment | 标题的垂直对齐方式 | top |
添加子图标题 title ( 标题文字 )
- title()函数的主要参数
参 数 | 说 明 | 默认值 |
---|---|---|
loc | 标题位置 | left,right |
rotation | 标题文字旋转角度 | |
color | 标题颜色 | 黑色 |
fontsize | 标题的字体大小 | |
fontweight | 字体粗细 | normal |
fontstyle | 设置字体类型 | |
horizontalalignment | 标题水平对齐方式 | center |
verticalalignment | 标题的垂直对齐方式 | top |
fontdict | 设置参数字典 |
7.tight_layout()函数
自动调整子图
- 检查坐标轴标签、刻度标签、和子图标题,自动调整子图,使之填充整个绘图区域,并消除子图之间的重叠。
tight_layout( rect=[left, bottom, right, top] )
二:散点图
1.什么是散点图
散点图 (Scatter):是数据点在直角坐标系中的分布图
- 数据分布规律;数据变化趋势;数据分组
2.绘制散点图 scatter() 函数
scatter( x, y, scale, color, marker, label )
参 数 | 说 明 | 默认值 |
---|---|---|
x | 数据点的x坐标 | 不可省略 |
y | 数据点的y坐标 | 不可省略 |
scale | 数据点的大小 | 36 |
color | 数据点的颜色 | |
marker | 数据点的样式 | ’o’(圆点) |
label | 图例文字 |
- color参数——常用颜色
颜色 | 缩略字符 | 颜色 | 缩略字符 |
---|---|---|---|
blue | b | black | K |
green | g | white | w |
red | r | cyan | c |
yellow | y | magenta | m |
- marker参数——数据点样式
取值 | 中文描述 | 取值 | 中文描述 | 取值 | 中文描述 |
---|---|---|---|---|---|
- | 实线 | 1 | 朝下的三角 | v | 朝下的三角形 |
– | 虚线 | 2 | 朝上的三角 | ^ | 朝上的三角形 |
-. | 点线 | 3 | 朝左的三角 | < | 朝左的三角形 |
: | 点虚线 | 4 | 朝右的三角 | > | 朝右的三角形 |
. | 点 | s | 正方形 | D | 钻石形 |
, | 像素 | p | 五角形 | d | 小版钻石形 |
o | 圆形 | * | 星型 | | | 垂直线形 |
+ | +号标记 | h | 1号六角形 | _ | 水平线行 |
x | x号标记 | H | 2号六角形 |
色彩映射
- plt.scatter(x, y, c , cmap )
- 将参数c指定为一个列表或数组,所绘制图形的颜色,可以随这个列表或数组中元素的值而变换,变换所对应的颜色由参数cmap中的颜色所提供
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.arange(10)
dot_color = [1,2,1,0,2,0,1,2,1,0]
plt.scatter(x,y,c=dot_color,cmap='brg') #0:blue;red:1;green:2
3.添加文字 text() 函数
text( x, y, s, fontsize,color )
参 数 | 说 明 | 默认值 |
---|---|---|
x | 文字的x坐标 | 不可省略 |
y | 文字的y坐标 | 不可省略 |
s | 显示的文字 | 不可省略 |
fontsize | 文字的大小 | 12 |
color | 文字的颜色 | 黑色 |
4.坐标轴设置
函数 | 说明 |
---|---|
xlabel( x, y, s, fontsize,color) | 设置x轴标签 |
ylabel( x, y, s, fontsize,color) | 设置y轴标签 |
xlim(xmin, xmax) | 设置x轴坐标的范围 |
ylim(ymin, ymax) | 设置y轴坐标的范围 |
tick_params(labelsize) | 设置刻度文字的字号 |
# 绘制标准正态分布的散点图
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif']="SimHei" #设置默认字体为中文黑体
plt.rcParams['axes.unicode_minus'] = False #字符显示
n=1024 # 标准正态分布的散点坐标
x = np.random.normal(0,1,n)
y = np.random.normal(0,1,n)
plt.scatter(x, y, color="blue",marker='*' ) #绘制数据点
plt.title("标准正态分布",fontsize=20) #设置标题
plt.text(2.5,2.5,"均值:0\n标准差:1") #设置文本
plt.xlim(-4,4) #x轴范围
plt.ylim(-4,4) #y轴范围
plt.xlabel('横坐标',fontsize=14)
plt.ylabel('纵坐标',fontsize=14)
plt.show()
5.增加图例
scatter( x, y, scale, color, marker, label ) label指定图例内容
legend(loc, fontsize) 显示图例
- loc参数——指定图例的位置
取值 | 图例位置 | 取值 | 图例位置 |
---|---|---|---|
0 | best | 6 | center left |
1 | upper | right | 7 |
2 | upper | left | 8 |
3 | lower | left | 9 |
4 | lower | right | 10 |
5 | right |
三:折线图
- 散点图的基础上,将相邻的点用线段相连接。
- 描述变量变化的趋势
1.绘制折线图 plot()函数
plot( x, y, color, marker, label, linewidth, markersize )
参 数 | 说 明 | 默认值 |
---|---|---|
x | 数据点的x坐标 | 0,1,2,3… |
y | 数据点的y坐标 | 不可省略 |
color | 数据点的颜色 | |
marker | 数据点的样式 | ’o’(圆点) |
label | 图例文字 | |
linewidth | 折线的宽度 | |
markersize | 数据点的大小 |
二:柱形图
由一系列高度不等的柱形条纹表示数据分布的情况
1.绘制柱形图 bar()函数
bar( left, height, width, facecolor, edgecolor, label )
#绘制柱形图
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']="SimHei" #设置默认字体为中文黑体
plt.rcParams['axes.unicode_minus'] = False #字符显示
y1=[32,25,16,30,24,45,40,33,28,17,24,20]
y2=[-23,-35,-26,-35,-45,-43,-35,-32,-23,-17,-22,-28]
plt.bar(range(len(y1)),y1,width=0.8,facecolor='green',edgecolor='white',label='统计量1')
plt.bar(range(len(y2)),y2,width=0.8,facecolor='red',edgecolor='white',label='统计量2')
plt.title("柱状图",fontsize=20) #添加标题
plt.legend() #显示图例
plt.show() #显示绘图