
- 前言
- 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子库提供了一组读取和显示相关函数, 用于在绘图区域中增加显示内容及读入数据
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库查表
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)