- 前言
- 💙Matplotlib库简介
- 🍎matplotlib.pyplot 库概述
- 🍓matplotlib.pyplot 库解析
- 💜plt 库绘图区域函数
- 🌳figure()函数
- 🍀axes()函数
- 🌻subplot()函数
- 💖plt 库读取和显示函数
- 💗plt 库的基础图表函数
- 🧁绘制两条直线
- 🍧绘制圆柱图
- 💛plt 库的坐标轴设置函数
- 🤎plt 库的标签设置函数
- 💚案例
- 💐一个窗口绘制多个图像
- 🌸霍兰德人格分析(实验)
- 总结
提示:以下是本篇文章正文内容
💙Matplotlib库简介Matplotlib: 高质量的二维数据可视化功能库,提供了超过100种数据可视化展示效果,通过matplotlib.pyplot子库调用各可视化效果,Python最主要的数据可视化功能库,基于Numpy开发
如图
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()
效果如图:
函数原型
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子库提供了一组读取和显示相关函数, 用于在绘图区域中增加显示内容及读入数据
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()
线一: 线二:
设置图标
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库查表