Python库之数据可视化---Matplotlib


前言


提示:以下是本篇文章正文内容

💙Matplotlib库简介

Matplotlib: 高质量的二维数据可视化功能库,提供了超过100种数据可视化展示效果,通过matplotlib.pyplot子库调用各可视化效果,Python最主要的数据可视化功能库,基于Numpy开发

如图
在这里插入图片描述

🍎matplotlib.pyplot 库概述

matplotlib是提供数据绘图功能的第三方库, 其pyplot子库主要用于实现各种数据展示图形的绘制

matplotlib.pyplot是matplotlib的子库, 引用方式如下:

import matplotlib.pyplot as plt

上述语句与import matplotlib.pyplot一致, as保留字与 import 一起使用能够改变后续代码中库的命名空间, 有助于提高代码可读性。 简单说, 在后续程序中, plt将代替 matplotlib.pyplot

matplotlib库由一系列有组织有隶属关系的对象构成, 这对于基础绘图操作来说显得过于复杂。 因此, matplotlib提供了一套快捷命令式的绘图接口函数, 即pyplot子模块。 pyplot将绘图所需要的对象构 建过程封装在函数中, 对用户提供了更加友好的接口。 pyplot模块提供一批预定义的绘图函数,大多数函数可以从函数名辨别它的功能。

🍓matplotlib.pyplot 库解析

plt子库提供了一批操作和绘图函数, 每个函数代表对图像进行的一个操作, 比如创建绘图区域、 添加标注或者修改坐标轴等。

这些函数采用plt.< b > ()形式调用, 其中< b > 是具体函数名称。如:plt.figure; plt.axis; plt.subplot; plt.legend; plt.plot; plt. xlable

💜plt 库绘图区域函数

🌳figure()函数

函数原型

plt.figure(figsize = None,facecolor = None)  # 创建一个全局绘图区域

使用figure()函数创建一个全局绘图区域, 并且使它成为当前的绘图对象, figsize参数可以指定绘图区域的宽度和高度, 单位为英寸。 鉴于figure()函数参数较多, 这里采用指定参数名称的方式输入参数

plt.figure(figsize=(8,4))
plt.show()

🍀axes()函数

函数原型

plt.axes(rect,axisbg='w')   # 创建一个坐标系风格的子绘图区域

axes()默认创建一个subplot(111)坐标系, 参数rec= [left,bottom,width,height]中四个变量的范围都为[0,1] ,表示坐 标系与全局 绘图区域的关系; facecolor 表 示
背景色, 默认为白色‘w’

import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
plt.axes([0.1,0.1,0.7,0.3],facecolor='g')
plt.show()

效果如图:
在这里插入图片描述

🌻subplot()函数

函数原型

plt.subplot(nrows,ncols,plot_number) # 在全局绘图区域中创建一个子绘图区域

subplot()都用于在全局绘图区域内创建子绘图区域,其参数表示将全局绘图区域分成nrows行和ncols 列,并根据先行后列的计数方式 在plot_number 位置生成一个坐标系, 实例代码如下, 三个参数关系 如图所示。其中, 全局绘图区域被风割成3x2 的网格, 其中, 在第4 个位置绘制了一个坐标系。

import matplotlib.pyplot as plt
plt.figure(figsize=(8,4))
plt.subplot(324)
plt.show()

在这里插入图片描述
plt绘图区域函数总结
在这里插入图片描述

💖plt 库读取和显示函数

plt子库提供了一组读取和显示相关函数, 用于在绘图区域中增加显示内容及读入数据

在这里插入图片描述

💗plt 库的基础图表函数

在这里插入图片描述
在这里插入图片描述

plot() 函数是用于绘制直线的最基础函数, 调用方式很灵活, x 和 y 可以是numpy 计算出的数组, 并用关键字参数指定各种属 性。 其中, label表示设置标签并在图例(legend) 中显示, color表示曲线的颜色,linewidth 表示曲线的宽度。

🧁绘制两条直线

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,11)# 从0到10,个数为11的等差数列
y1 = 2*x
y2 = 3*x
# 一个figure就是一个窗口
plt.figure()
plt.plot(x,y1,color="red")
plt.plot(x,y2,color="pink")

plt.show()

在这里插入图片描述

🍧绘制圆柱图

import numpy as np
import matplotlib.pyplot as plt
n = 6
x = np.arange(n)
# 生成6个数,这6个数在0到1正态分布
y = np.random.uniform(0,1,n)
plt.bar(x,y)
plt.show()

💛plt 库的坐标轴设置函数

在这里插入图片描述
绘制两条线并添加上设定的标签

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,11)
y = 2*x

plt.figure(num=1)# figure1
plt.plot(x,y)
plt.xlim(0,3)# 设置x轴范围
plt.ylim(0,3)# 设置y轴范围
plt.xlabel('this is x')# 设置x轴标签
plt.ylabel('this is y')# 设置y轴标签

plt.figure(num=2)#figure2
plt.plot(x,y)
plt.ylim(0,9)# 设置y轴范围
plt.yticks([4,8],['python','plt'])# 设置y轴刻度
plt.show()

线一:
在这里插入图片描述
线二:
在这里插入图片描述

🤎plt 库的标签设置函数

在这里插入图片描述

在这里插入图片描述

设置图标

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,10,11)# 从0到1,个数为11的等差数列
y1 = 2*x
y2 = x*x
plt.figure()
plt.plot(x,y1,label='y1')
plt.plot(x,y2,label='y2')
plt.legend()   # 放置图标
# 显示
plt.show()

在这里插入图片描述

💚案例

💐一个窗口绘制多个图像

import numpy as np
import matplotlib.pyplot as plt
x= np.linspace(0, 2*np.pi, 500) # 创建自变量数组
y1 = np.sin(x) # 创建函数值数组
y2 = np.cos(x)
y3 = np.sin(x*x)
plt.figure(1) # 创建图形
ax1 = plt.subplot(2,2,1) # 第一行第一列图形
ax2 = plt.subplot(2,2,2) # 第一行第二列图形
ax3 = plt.subplot(212, facecolor='y') # 第二行
plt.sca(ax1) # 选择ax1
plt.plot(x,y1,color='red') # 绘制红色曲线
plt.ylim(-1.2,1.2) # 限制y坐标轴范围
plt.sca(ax2) # 选择ax2
plt.plot(x,y2,'b--') # 绘制蓝色曲线
plt.ylim(-1.2,1.2)
plt.sca(ax3) # 选择ax3
plt.plot(x,y3,'g--')
plt.ylim(-1.2,1.2)
plt.show()

显示:
在这里插入图片描述

🌸霍兰德人格分析(实验)

霍兰德认为:人格兴趣与职业之间应有一种内在的对应关系
人格分类:研究型、艺术型、社会型、企业型、传统型、现实性
职业:工程师、实验员、艺术家、推销员、记事员、社会工作者

霍兰德人格分析雷达图

  • 需求:雷达图方式验证霍兰德人格分析
  • 输入:各职业人群结合兴趣的调研数据
  • 输出:雷达图

通用雷达图绘制: matplotlib库
专业的多维数据表示: numpy库

书上给的代码根本用不了,要删掉一些代码,可能是版本跟新的问题吧

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei' #用于支持中文
matplotlib.rcParams['font.sans-serif']=['SimHei']
radar_labels = np.array(['研究型(I)','艺术型(A)','社会型(S)',\
                         '企业型(E)','常规型(C)','现实型(R)']) #雷达标签
nAttr = 6      # 多边形边数
data = np.array([[0.40, 0.32, 0.35, 0.30, 0.30, 0.88],
                 [0.85, 0.35, 0.30, 0.40, 0.40, 0.30],
                 [0.43, 0.89, 0.30, 0.28, 0.22, 0.30],
                 [0.30, 0.25, 0.48, 0.85, 0.45, 0.40],
                 [0.20, 0.38, 0.87, 0.45, 0.32, 0.28],
                 [0.34, 0.31, 0.38, 0.40, 0.92, 0.28]]) #数据值
data_labels = ('艺术家', '实验员', '工程师', '推销员', '社会工作者','记事员')
angles = np.linspace(0, 2*np.pi, nAttr, endpoint=False)
fig = plt.figure(facecolor="white")
plt.subplot(111, polar=True)
plt.plot(angles,data,'o-', linewidth=1, alpha=0.2) # 按照data画图
plt.fill(angles,data, alpha=0.25)   # 填充半透明颜色
plt.thetagrids(angles*180/np.pi, radar_labels)  # 为极坐标设置标签,即六个顶点
plt.figtext(0.52, 0.95, '霍兰德人格分析', ha='center', size=20) # 标题
legend = plt.legend(data_labels, loc=(0.94, 0.80), labelspacing=0.1)
plt.setp(legend.get_texts(), fontsize='small')
plt.grid(True)
plt.savefig('holland_radar.JPG')
plt.show()

效果

np.linspace(0, 2*np.pi, nAttr, endpoint=False),函数的起点设置为0,终点设置为2pi,返回一个两端点间数值平均分布的长为nAttr的数组angles,它表示从一个属性点到下一个属性点笔画需要旋转的角度,它取决于nAttr的大小,也就是雷达图的多边形边数

总结

提示:这里对文章进行总结:

Matplotlib库查表
在这里插入图片描述

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Super.Bear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值