day4-Tensorflow2.0-Matplotlib数据可视化

数据可视化——

  • 数据分析阶段:理解和洞察数据之间的关系;
  • 算法调试阶段:发现问题,优化算法;
  • 项目总结阶段:展示项目成果。

Matplotlib:绘制图表的第三方库,可以快速方便地生成高质量的图表

Matplotlib绘图基础

  • 安装Matplotlib库 pip install matplotlib
  • 导入Matplotlib库中的pyplot子库import matplotlib.pyplot as plt

Figure对象
使用Figure对象进行绘图,相当于一个画布,因此在使用时应该首先创建一个figure对象;
figure(num, figsize, dpi, facecolor, edgecolor, frameon)

  • num:图形编号或名称,取值为数字/字符串
  • figsize:绘图对象的宽和高,单位为英寸
  • dpi:绘图对象的分辨率,缺省值为80
  • facecolor:背景颜色
  • edgecolor:边框颜色
  • frameon:表示是否显示边框

常用颜色:

颜色 缩略字符
blue b
green g
red r
yellow y
black k
white w
cyan c
magenta m

划分子图:subplot(行数, 列数, 子图序号)
从左到右,从上到下;

设置中文字体:plt.rcParams["font.sans-serif"]="SimHei"

中文字体 英文描述
宋体 SimSum
黑体 SimHei
微软雅黑 Microsoft YaHei
微软正黑体 Microsoft JhengHei
楷体 KaiTi
仿宋 FangSong
隶书 LiSu
幼圆 YouYuan

恢复标准默认配置:plt.rcdefaults()

添加标题:

  • 添加全局标题suptitle(标题文字)
  • 添加子标题title(标题文字) # 标题文字为字符串,不能省略
    suptitle()函数的主要参数:
参数 说明 默认值
x 标题位置的x坐标 0.5
y 标题位置的y坐标 0.98
color 标题颜色 黑色
backgroundcolor 标题背景颜色 12
fontsize 标题字体大小
fontweight 字体粗细 normal
fontstyle 设置字体类型
horizontalalignment 标题水平对齐方式 center
verticalalignment 标题的垂直对齐方式 top

子标题可以使用fontdict字典传递,注意字典中的关键字是字符串类型,要加上引号;
tight_layout()函数:检查坐标轴标签、刻度标签、和子图标题,自动调整子图,使之填充整个绘图区域,并消除子图之间的重叠。

散点图(Scatter):是数据在直角坐标系中的分布图

  • 原始数据分布的规律
  • 数据变化的趋势
  • 数据分组

scatter()函数——scatter(x, y, scale, color, marker, label)
一般来说,散点图中有多个点,因此,通常由python列表或者numpy数组给出所有的x和y;

参数 说明 默认值
x 数据点的x坐标 不可省略
y 数据点的y坐标 不可省略
scale 数据点的大小 36
color 数据点的颜色
marker 数据点的样式 ‘o’(圆点)
label 图例文字

text()函数——text(x,y,s,fontsize,color)

参数 说明 默认值
x 文字的x坐标 不可省略
y 文字的y坐标 不可省略
s 显示的文字 不可省略
fontsize 文字的大小 12
color 文字的颜色 黑色

增加图例:

  • sctter()函数的label属性中指定图例内容
  • 再用legend(loc,fontsize)显示图例
import matplotlib.pyplot as plt
import numpy as np


plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置默认字体为中文黑体
plt.rcParams['axes.unicode_minus'] = False  # 坐标轴设置
""" 设置中文字体为默认字体后,坐标轴上的符号可能会显示出错
 设置上面的参数为False后,pyplot会根据数据的分布区间,自动加上坐标轴"""

# 标准正态分布
n = 1024  # 随机点个数
x1 = np.random.normal(0, 1, n)  # 生成数据点x坐标
y1 = np.random.normal(0, 1, n)  # 生成数据点y坐标

# 增加均匀分布的点
x2 = np.random.uniform(-4, 4, (1, n))
y2 = np.random.uniform(-4, 4, (1, n))
plt.scatter(x2, y2, color='yellow', marker='o', label='均匀分布')

plt.scatter(x1, y1, color='blue', marker='*', label='正态分布')  # 绘制散点图

plt.legend()

plt.title('标准正态分布', fontsize=20)  # 设置标题
# plt.text(2.5, 2.5, '均 值:0\n标准差:1')  # 设置文本


# 设置坐标轴范围
plt.xlim(-4, 4)
plt.ylim(-4, 4)

# 设置坐标轴标签
plt.xlabel('横坐标x', fontsize=14)
plt.ylabel('纵坐标y', fontsize=14)

plt.show()

折线图和柱状图

折线图(Line Chart):散点图的基础上,将相邻的点用线段相连接

  • 描述变量变化的趋势
  • plot()函数——plot(x,y,color,marker,label,linewidth,markersize)
import matplotlib.pyplot as plt
import numpy as np

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置默认字体为中文黑体

n = 24  # 随机点个数
y1 = np.random.randint(27, 37, n)  # 生成数据点y1坐标
y2 = np.random.randint(40, 60, n)  # 生成数据点y2坐标
"""
x可省略,y不可省略,matplotlib会自动根据数据点的个数给出数字序列,作为x坐标
"""
plt.plot(y1, label='温度')
plt.plot(y2, label='湿度')

# 设置坐标轴范围
plt.xlim(0, 23)
plt.ylim(20, 70)
# 设置坐标轴标签
plt.xlabel('小时', fontsize=14)
plt.ylabel('测量值', fontsize=14)

plt.title('24小时温度湿度统计', fontsize=20)  # 设置标题

plt.legend()
plt.show()

柱状图(Bar Chart):由一系列高度不等的柱形条纹表示数据分布的情况

  • 数据的统计和分析
  • bar()函数——bar(left,height,width,facecolor,edgecolor,label)
import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置默认字体为中文黑体
plt.rcParams['axes.unicode_minus'] = False  # 坐标轴设置

y1 = [32,35,16,30,24,45,40,33,28,17,24,20]  # 生成数据点y1坐标
y2 = [-23,-35,-26,-35,-45,-43,-35,-32,-23,-17,-22,-28]  # 生成数据点y2坐标

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()

matplotlib官网
http://matplotlib.org/genindex.html
Gallery页面

发布了80 篇原创文章 · 获赞 6 · 访问量 7618

猜你喜欢

转载自blog.csdn.net/qq_33749437/article/details/104419540