IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 可视化-Matplotlib -> 正文阅读

[Python知识库]可视化-Matplotlib

在机器学习中,可视化是数据特征分析和结果展示的一个重要手段。它可以提供数据的分布特征、统计特征,回归、分类和聚类等的结果。

目标: 将数据以图标的方式展示,从而分析出数据有价值的规律

绘图工具:(此处主要学习Matplotlib部分)

  1. Matplotlib(功能多)
  2. Seaborn库(基于Matplotlib绘制更多图表;擅长统计图和pandas更好结合)
  3. Pyecharts库(擅长地理图表的绘制)

绘图的一般流程:

一、Matplotlib可视化

1、折线图(趋势)?plot

折线图是用直线段将各数据点连接起来而组成的图形,以折线的方式显示数据的变化趋势。

# 导入 Numpy 模块
# 导入 matplotlib.pyplot 库
import numpy as np
import matplotlib.pyplot as plt

# 准备数据
x=np.linspace(0,10,30)                    # 0-10之间30个元素的等差数列
noise=np.random.randn(30)                 # 30个标准正态分布的元素
y1=x**2+2*noise                           # 数据1
y2=x**1+2*noise                           # 数据2
y3=x**1.5+2*noise                         # 数据3
plt.rcParams['font.sans-serif']='SimHei'  # 设置字体为SimHei以显示中文
plt.rc('font',size=15)                    # 设置图中字号大小
plt.figure(figsize=(6,4))                 # 设置画布

# 绘制折线图,设置颜色和线型:b蓝色 g绿色 r红色 y黄色 w白色 c青色 m紫色
plt.plot(x,y1,color='r',linestyle='--')
plt.plot(x,y2,color='b',linestyle='-')
plt.plot(x,y3,color='g',linestyle='-.')
plt.title('折线图')                           # 添加标题 title
plt.legend(['曲线y1','曲线y2','曲线y3'])      # 添加图例 legend
plt.xlabel('x')                              # 添加横轴标签 xlabel
plt.ylabel('y')                              # 添加纵轴标签 ylabel
plt.show()                                   # 显示图片

点线图:

# 绘制点线图
plt.figure(figsize=(6,4))                            # 设置画布大小
# 绘制点线图,设置颜色、线型、点的形状
plt.plot(x,y1,color='r',linestyle='--',marker='o')
plt.plot(x,y2,color='b',linestyle='-',marker='*')
plt.plot(x,y3,color='g',linestyle='-.',marker='^')
plt.title('点线图')                                    # 添加标题
plt.legend(['曲线 y1','曲线 y2','曲线 y3'])            # 添加图例 legend
plt.ylabel('x')                                       # 添加横轴标签
plt.ylabel('y')                                       # 添加纵轴标签
plt.show()                                            # 显示图片

?

2、柱状图? bar

柱状图又称长条图、柱状统计图,是一种以长方形的长度为变量的统计图表。

# 绘制柱状图
plt.figure(figsize=(6,4))    # 设置画布
plt.bar(x,y1,width=0.2)      # 绘制柱状图:x=x轴数据,height=条形高度 width=宽默认0.8
plt.title('柱状图')           # 添加标题
plt.xlabel('x')              # 添加横轴标签
plt.ylabel('y1')             # 添加纵轴名称 
plt.show()                   # 显示图片

绘制数据y1、y2、y3各自的和的柱状图????????

# 绘制y1、y2、y3各自的和的柱状图
plt.figure(figsize=(6,4))                                      # 设置画布大小
plt.bar([0,1,2],[np.sum(y1),np.sum(y2),np.sum(y3)],width=0.5)  # 绘制柱状图
plt.title('柱状图')                                            # 添加标题
labels=['y1的和','y2的和','y3的和']
plt.xlabel('数据系列y')                                        # 添加横轴标签
plt.ylabel('数据系列y的和')                                    # 添加纵轴标签
plt.xticks(range(3),labels)                                    # 横轴刻度与标签对准
plt.show()                                                     # 显示图片

?

堆叠柱状图

(两个数据系列y1、y2的堆叠柱状图)

# 绘制y1、y2叠加的堆叠柱状图
plt.figure(figsize=(6,4))           # 设置画布
plt.bar(x,y1,width=0.2)             # 绘制柱状图
plt.bar(x,y2,width=0.2,bottom=y1)   # 绘制柱状图,堆叠到y1上方
plt.title('堆叠柱状图')              # 添加标题
plt.xlabel('x')                     # 添加横轴标签
plt.ylabel('y')                     # 添加纵轴标签
plt.legend(['y1','y2'])             # 设置图例
plt.show()                          # 显示图片

(三个数据系列y1、y2、y3的堆叠柱状图)

# 绘制y1、y2、y3的堆叠柱状图
plt.figure(figsize=(6,4))                      # 设置画布大小
plt.bar(x,y1,width=0.2)                        # 绘制柱状图
plt.bar(x,y2,width=0.2,bottom=y1)              # 绘制柱状图,堆叠在y1上方
plt.bar(x,y3,width=0.2,bottom=y1+y2,color='r') # 绘制柱状图,堆叠在y1+y2上方
plt.title('堆叠柱状图')                         # 添加标题
plt.xlabel('x')                                # 添加横轴标签
plt.ylabel('y')                                # 添加纵轴标签
plt.legend(['y1','y2','y3'])                   # 添加图例
plt.show()                                     # 显示图形

?

水平柱状图

# 绘制水平柱状图
plt.figure(figsize=(6,4))           # 设置画布
plt.barh(x,width=y1,height=0.2)     # 水平柱状图
plt.title('水平柱状图')              # 添加标题
plt.xlabel('y')                     # 添加纵轴标签
plt.ylabel('x')                     # 添加横轴标签
plt.show()                          # 显示图形

?

水平堆叠柱状图

# 绘制水平柱状图
plt.figure(figsize=(6,4))                               # 设置画布大小
plt.barh(x,width=y1,height=0.2)                         # 绘制水平柱状图
plt.barh(x,width=y2,height=0.2,left=y1)                 # 绘制水平柱状图,堆叠到y1右侧
plt.barh(x,width=y3,height=0.2,left=y1+y2,color='red')  # 绘制水平柱状图,堆叠到y1+y2右侧
plt.title('水平柱状图')                                  # 添加标题
plt.xlabel('y')                                         # 添加纵轴标签
plt.ylabel('x')                                         # 添加横轴标签
plt.legend(['y1','y2','y3'])                            # 设置图例
plt.show()                                              # 显示图形

?

3、 直方图 hist

直方图,又称作质量分布图,它是由一系列高度不等的纵向条纹或线段表示数据分布的情况,一般用横轴表示数据的类型,纵轴表示分布情况。

# 绘制直方图
import numpy as np 
x_norml=np.random.randn(1000)              # 生成有1000个标准正态分布元素的数组
plt.rcParams['axes.unicode_minus']=False   # 设置坐标刻度能显示负号
plt.figure(figsize=(6,4))                  # 设置画布大小
plt.hist(x_norml,bins=50)                  # 绘制直方图,分箱数为50
plt.title('直方图(频数)')                   # 添加标题
plt.show()                                 # 显示图形

?

绘制多个数组的直方图

# 绘制多个数组的直方图
x_norm2=2+np.random.randn(1000)                   # 生成以2为中心,有1000个正态分布元素的数组
x_norm3=4+np.random.randn(1000)                   # 生成以4为中心,有1000个正态分布元素的数组
plt.figure(figsize=(6,4))                         # 设置画布大小
plt.hist(x_norm1,bins=50,density=True,color='r')  # 绘制x_norm1的直方图
plt.hist(x_norm2,bins=50,density=True,color='g')  # 绘制x_norm2的直方图
plt.hist(x_norm3,bins=50,density=True,color='b')  # 绘制x_norm3的直方图
plt.title('直方图(概率)')                         # 添加标题
plt.show()                                        # 显示图形 

?

4、饼图 pie

饼图可以显示一个数据序列中各项的大小与各项总和的比例。每个数据序列具有唯一的颜色或图形,并且与图例中的颜色是相对应的。

绘制y1、y2、y3各自的和的饼图

# 绘制饼图
plt.figure(figsize=(6,4))                        # 设置画布大小
plt.pie([np.sum(y1),np.sum(y2),np.sum(y3),],
labels=labels,
autopct='%1.1f%%')                               # 绘制饼图
plt.title('饼图')                                # 添加标题
plt.show()                                       # 显示图形

?

绘制分离饼图

# 绘制和的分离饼图,并添加阴影
plt.figure(figsize=(6,4))               # 设置画布大小
plt.pie([np.sum(y1),np.sum(y2),np.sum(y3),],explode=(0,0,0.1),labels=labels,
       autopct='%1.1f%%',shadow=True)   # 绘制饼图
plt.title('分离饼图')                    # 添加标题
plt.show()                              # 显示图形 

?

5、散点图? scatter

在回归分析中,散点图是指数据点在直角坐标系平面上的分布图,通常用于比较跨类别的数据。散点图包含的数据点越多,比较的效果就会越好。

#  绘制散点图
plt.figure(figsize=(6,4))                    # 设置画布大小
plt.scatter(x,y1,marker='o')                 # 绘制y1散点图
plt.scatter(x,y2,marker='*')                 # 绘制y2散点图
plt.scatter(x,y3,marker='^')                 # 绘制y3散点图
plt.title('散点图')                          # 添加标题
plt.legend(['数据y1','数据y2','数据y3'])      # 添加图例
plt.xlabel('x')                              # 添加横轴标签
plt.ylabel('y')                              # 添加纵轴标签 

?

6、箱形图? ?boxplot

箱形图一般找数据中的异常的值,箱形图又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。

# 绘制箱形图
plt.figure(figsize=(6,4))                # 设置画布大小
labels=['数据y1','数据y2','数据y3']       # 设置箱形图数据系列的标签
plt.boxplot([y1,y2,y3],notch=True,labels=labels,meanline=True)
plt.title('箱形图')                      # 添加标题
plt.xlabel('数据y')                      # 添加横轴标签
plt.ylabel('数据y的值')                  # 添加纵轴名称
plt.show()                              # 显示图形

子图

一个画布上画多个图表,也就是figure划分成多个Axes对象,每个有自己独立的坐标系,称之为子图。API函数如下:

1、subplot

import matplotlib.pyplot as plt
plt.subplot(2,2,1)   #  2,2,1  选中两行两列中的第一个图表  
plt.plot([90,92,93])
plt.subplot(2,2,2)
plt.plot([90,92,93])
plt.subplot(2,2,3)
plt.plot([90,92,93])
plt.subplot(224)     #  ===》省略写法  221 逗号可以省略
plt.plot([90,92,93])
plt.show()

import  numpy as np
nums=np.arange(0,101)  # 100数据
nums
plt.subplot(2,2,1)  
plt.plot(nums,nums)    # 正比例函数(y=x)
plt.subplot(2,2,2)
plt.plot(nums,-nums)   # 反比例函数(y=-x)
plt.subplot(2,1,2)     # 占了两列  
plt.plot(nums,nums**2) # 幂函数 (y=x^2)
plt.show()

2、subplots

import  numpy as np
nums=np.arange(0,101)  # 100数据
fig,axeses=plt.subplots(2,2)
#axeses代表所有的子图对象(根据索引定位,索引从0开始计算)
# 四个子图
ax1=axeses[0,0]
ax2=axeses[0,1]
ax3=axeses[1,0]
ax4=axeses[1,1]
ax1.plot(nums,nums)            #  正比例
ax2.plot(nums,-nums)           #  反比例    
ax3.plot(nums,nums**2)         #  幂函数
ax4.plot(nums,np.log(nums))    #  log函数:y=log(x)  
plt.show()

3、add_subplot

# 定义画布分割区域  有了画布往里面添加
import matplotlib.pyplot  as  plt
fig2=plt.figure(figsize=(20,8))
rand_arr=np.random.randn(100)        # 创建符合正态分布数据
rand_arr1=np.random.randn(50)
fig2.add_subplot(2,2,1)              # 2行2列4幅子图的第1幅
plt.plot(rand_arr1)
fig2.add_subplot(2,2,2)              # 2行2列4幅子图的第2幅
plt.plot(rand_arr)
fig2.add_subplot(2,2,3)              # 2行2列4幅子图的第3幅
plt.plot(rand_arr)
fig2.add_subplot(2,2,4)              # 2行2列4幅子图的第4幅
plt.plot(rand_arr1)
plt.show()

?

# 绘制子图
fig=plt.figure(figsize=(12,12))                       # 设置画布大小
   # 子图 1  (点线图)
ax1=fig.add_subplot(2,2,1)                            # 2行2列4幅子图的 第1幅图
plt.plot(x,y1,color='r',linestyle='--',marker='o')    # 绘制数据y1的折线图   
plt.plot(x,y2,color='b',linestyle='-',marker='*')     # 绘制数据y2的折线图
plt.plot(x,y3,color='g',linestyle='-',marker='^')     # 绘制数据y3的折线图
plt.title('点线图')                                   # 添加标题
plt.legend(['曲线y1','曲线y2','曲线y3'])               # 设置曲线的图例
plt.xlabel('x')                                       # 添加横轴名称
plt.ylabel('y')                                       # 添加纵轴名称
   # 子图 2  (柱状图)
ax1=fig.add_subplot(2,2,2)                            # 2行2列4幅子图的 第2幅图
plt.bar([0,1,2],
        [np.sum(y1),np.sum(y2),np.sum(y3)],
        width=0.3)                                    # 绘制y1、y2、y3各自和的柱状图
plt.title('柱状图')                                    # 添加标题
labels=['y1的和','y2的和','y3的和']                    # 设置柱状图的标签
plt.xlabel('数据系列y')                                # 添加横轴名称
plt.ylabel('数据系列y的和')                            # 添加纵轴名称
plt.xticks(range(3),labels)                           # 设置横轴刻度及对应的标签
   # 子图 3  (饼图)
ax1=fig.add_subplot(2,2,3)                            # 2行2列4幅子图的 第3幅图
plt.pie([np.sum(y1),np.sum(y2),np.sum(y3),],
        labels=labels,
        autopct='%1.1f%%')                            # 绘制3个数据系列和的饼图
plt.title('饼图')                                     # 添加标题
   # 子图 4  (箱形图)
ax1=fig.add_subplot(2,2,4)                            # 2行2列4幅子图的 第4幅图
labels=['数据y1','数据y2','数据y3']                    # 设置箱线图的标签
plt.boxplot([y1,y2,y3],
            notch=True,
            labels=labels,
            meanline=True)                             # 绘制3个数据系列的箱线图
plt.title('箱线图')                                    # 添加标题
plt.xlabel('数据系列y')                                # 添加横轴标签
plt.ylabel('数据系列y的值')                             # 添加纵轴标签
plt.show()                                             # 显示图形

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-13 11:58:44  更:2021-08-13 11:59:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 20:02:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码