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()    #显示绘图

柱形图

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐