1.轮廓图
1.1 基本介绍
在二维直角坐标系中,将 n 次观测值可画出 n 条折线构成轮廓图,其中横坐标表示各个变量,纵坐标表示与变量取值成正比的数值。
作图步骤
(1) 作直角坐标系,横坐标取 p 个点表示 p 个变量.
(2) 对给定的一次观测值,在 p 个点上的纵坐标(即高度)和它对应的变取值成正比.
(3) 连接 p 个高度的顶点得一折线,则一次观测值的轮廓为一条多角折线形
1.2 实现代码
pandas.plotting.parallel_coordinates(frame, class_column)
frame:DataFrame 类型的数据
class_column:字符串类型,指定哪一列包含类的名字。Column name
containing class names.
1.3. 代码示例
pd_data=pd.read_csv("iris.csv")                                
plt.figure()
parallel_coordinates(pd_data,'Specie
s')
plt.show()       
                                                            
2.雷达图
2.1 基本介绍
雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置和角度通常是无信息的。 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规则多边形,极坐标图或 Kiviat图。它相当于平行坐标图,轴径向排列。
作图步骤
(1) 作一圆,并把圆周分为 p 等分.
(2) 连接圆心和各分点,把这 p 条半径依次定义为各变量的坐标轴,并标以适当的刻度.
(3) 对给定的一次观测值,把 p 个变量值分别点在相应的坐标轴上,然后连接成一个 p 边形.
2.3.代码示例
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'
matplotlib.rcParams['font.sans-serif']=['SimHei']
labels=np.array(['综合','第一周','第二周','第三周','第四周','第五周'])
nAttr=6
Python=np.array([88.7,85,90,95,70,96])
angles=np.linspace(0,2*np.pi,nAttr,endpoint=False)
Python=np.concatenate((Python,[Python[0]]))
angles=np.concatenate((angles,[angles[0]]))
fig=plt.figure(facecolor="white")
plt.subplot(111,polar=True)
plt.plot(angles,Python,'bo-',color='g',linewidth=2)
plt.fill(angles,Python,facecolor='g',alpha=0.2)
plt.thetagrids(angles*180/np.pi,labels)
plt.figtext(0.52,0.95,'python 成绩分析图',ha='center')plt.grid(True)
plt.savefig('dota_radar.png')
plt.show()
3. 调和曲线图
3.1 简单介绍
在数学上,较为完美的多维数据图表示方法可能是 D.F.Andcews 在 1972 年提出的三角多项式表示法。其思想是把多维空间中的一个点对应于二维平面上的一条曲线。

3.2 实验代码
pandas.plotting.andrews_curves(frame, class_column)
frame:DataFrame 类型的数据
class_column:字符串类型,指定哪一列包含类的名字。Column name containing
class names.
3.3 代码示例
from pandas.plotting import andrews_curves
import pandas as pd
import matplotlib.pyplot as plt
pd_data=pd.read_csv("iris.csv")
plt.figure()
andrews_curves(pd_data,'Species')
plt.show()
4.散布矩阵图
4.1 相关介绍
对角线部分:
核密度估计图(Kernel Density Estimation),就是用来看某一个 变量分布情况,横轴对应着该变量的值,纵轴对应着该变量的密度(可以理解为出现频次)。
非对角线部分:两个 变量之间分布的关联散点图。将任意两个变量进行配对,以其中一个为横坐标,另一个为纵坐标,将所有的数据点绘制在图上,用来衡量两个变量的关联度(Correlation)
4.2 实现代码
from pandas.plotting import scatter_matrix
scatter_matrix(frame, alpha=0.5, figsize=None, marker='.')
frame,pandas dataframe 对象
alpha, 图像透明度,一般取(0,1]
figsize,以英寸为单位的图像大小,一般以元组 (width, height) 形式设置
marker。Matplotlib 可用的标记类型,如’.’,’,’,’o’等。
4.3 代码示例
from pandas.plotting import scatter_matrix
import pandas as pd
import matplotlib.pyplot as plt
pd_data=pd.read_csv("iris.csv")
plt.figure()
scatter_matrix(pd_data,figsize=(10,10))
plt.show()
二、实验作业
为了研究人体的心肺功能,对 31个成年男子测量了肺活量(OXY),并且记录了他们的年龄(age)、体重( weight),以及简单训练后的测试数据:跑 1.5 英里的时间(time)、休息时的脉搏( pulse)、跑步时的脉搏( pulse)和跑步时记录的最大脉搏( pulse),共 7 项指标(数据见表 1.2)
(1)分别绘制 OXY 与 time 和 age 的散布图,从图中可得出什么结论?
(2)绘制 7 项指标的散布图矩阵,从这里能否直观看出一些结论
(3)绘制序号为 1,2,21,22 的 4 个人的轮廓图和雷达图;
(4)绘制序号为 1,2,21,2 的 4 个人的调和曲线图(放在同一张图上)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.sans-serif'] = 'Microsoft YaHei'
plt.rcParams['axes.unicode_minus'] = False
f=open('肺活量与其他指标的数据.txt')
data = pd.read_table(f,index_col='No')#(1)绘制 OXY 与 time 和 age 的散布图
time = data['time']
OXY = data['OXY']
age = data['age']
plt.scatter(time,OXY) #绘制OXY与time的散布图
plt.title('OXY和time')
plt.show()
plt.scatter(age,OXY) #绘制OXY与age的散布图
plt.title('OXY和age')
plt.show()
#结论:年龄和肺活量的关系不大#(2)绘制 7 项指标的散布图矩阵
pd.plotting.scatter_matrix(data)
#rpulse与mpulse之间,age与time之间关系明显# (3)绘制序号为 1,2,21,22 的 4 个人的轮廓图和雷达图
plt.style.use('ggplot')
sample = data.loc[[1,2,21,22]]
sample = pd.DataFrame(sample, dtype=np.float)         #使用ggplot绘图
sample = sample.apply(lambda x:(1.1*x-x.min())/(1.2*x.max()-1.02*x.min()))   #遍历DataFrame
angles = np.linspace(0,2*np.pi,7,endpoint=False)     # 将极坐标根据长度进行等分
labels = np.array(['age', 'weight', 'time', 'spulse', 'rpulse', 'mpulse', 'OXY'])
score = [sample.loc[1].tolist(),sample.loc[2].tolist(),sample.loc[21].tolist(),sample.loc[22].tolist()]
score_a = np.concatenate((score[0], [score[0][0]]))# 使雷达图数据封闭
score_b = np.concatenate((score[1], [score[1][0]]))
score_c = np.concatenate((score[2], [score[2][0]]))
score_d = np.concatenate((score[3], [score[3][0]]))
angles = np.concatenate((angles, [angles[0]]))    #数组的拼接
labels = np.concatenate((labels, [labels[0]]))
fig = plt.figure(figsize=(8, 6), dpi=100)  # 设置图形大小
ax = plt.subplot(111, polar=True)
ax.plot(angles, score_a, color='g')   #绘制雷达图
ax.plot(angles, score_b, color='b')
ax.plot(angles, score_c, color='r')
ax.plot(angles, score_d, color='y')
ax.set_thetagrids(angles*180/np.pi, labels)# 设置雷达图中每一项的标签显示
ax.set_theta_zero_location('N')# 设置雷达图的0度起始位置
ax.set_rlim(0, 1)# 设置雷达图的坐标刻度范围
ax.set_rlabel_position(270)
ax.set_title("肺活量指标数据")
plt.legend(["1号", "2号","2-1号","2-2号"], loc='best')
plt.show()
pd.plotting.parallel_coordinates(sample, 'age')    #轮廓图
plt.legend(["1号", "2号","2-1号","2-2号"], loc='best')
plt.show()#(4)绘制序号为 1,2,21,2 的 4 个人的调和曲线图
pd.plotting.andrews_curves(sample, 'age')
plt.legend(["1号", "2号","2-1号","2-2号"], loc='best')
plt.show()

结果示例

多元统计分析——各类图的具体应用(数据可视化)相关推荐

  1. 图扑软件用数据可视化形式告诉你,楼宇建设如何数字化转型

    在"新基建"驱动的数字经济热潮下,智慧园区建设发展成为实现园区管理绿色化.现代化.智慧化的核心抓手.通过利用云计算.物联网.大数据等新一代技术手段,充分聚合园区内各类资源,全面提升 ...

  2. python画折线图详解-Python数据可视化(一) 绘制折线图和散点图

    数据可视化示例 对数据可视化的浅认知 数据可视化是任何数据科学或机器学习的重要组成部分.可视化能将数据以更加直观的方式展现出来,使数据更加客观.更具说服力.同时,也易于发现隐藏在数据中的规律和意义.尤 ...

  3. python画河流图_《Python数据可视化之Matplotlib与Pyecharts》之主题河流图

    11.7.2  不同类型商品销售情况分析 为了分析该企业不同类型商品的销售额情况,绘制了不同商品销售额的主题河流图,Python代码如下: # -*- coding: utf-8 -*- # -*- ...

  4. python动态仪表图_《Python数据可视化之Matplotlib与Pyecharts》之仪表盘

    11.3.2  企业2019年销售业绩完成率 为了分析该企业在2019年的销售业绩完成情况,绘制了销售额的仪表盘,Python代码如下: # -*- coding: utf-8 -*- #声明Note ...

  5. plt数据图去边框 python3_Python数据可视化:绘制持仓榜单的“棒棒糖图”

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 荔枝 | 作者 Crossin的编程教室 | 来源 1. 需求 做股票分析 ...

  6. 一张好的图胜过千言万语!数据可视化都经历了怎样的发展历程

    CDA数据分析师 出品 编译:Mika [导读]信息爆炸时代,经过精心设计.形象生动的可视化图表往往要比一篇深度长文章更容易赢得眼球和青睐. 在一次TED演讲中,信息设计师汤米·麦考尔追溯了长达几个世 ...

  7. 多维度雷达图怎么做_数据可视化:柱状图、雷达图等六种基本图表的特点和适用场合...

    序言 进入正题之前,先纠正一种误解. 有人觉得,基本图表太简单.太原始,不高端,不大气,因此追求更复杂的图表.但是,越简单的图表,越容易理解,而快速易懂地理解数据,不正是"数据可视化&quo ...

  8. GPT4.0一句话实现各类图表制作,让数据可视化变得更简单!类图、流程图、ER图.....

    不知道大家有没有被ER建模工具复杂的操作按钮给困扰过.在作者学习ER建模时,曾希望能直接画出类图,但最终还是不得不学习繁琐的操作流程.然而,随着GPT的出现,AI现在也可以绘制UML图了!今天要向大家 ...

  9. r语言echarts画箱线图_R语言之数据可视化---交互式图表recharts

    环图 一.安装方式: if (!require(devtools)) library(devtools) install_github("madlogos/recharts") 二 ...

最新文章

  1. 在Ubuntu14.04安装F.lux
  2. Laravel5 打印SQL
  3. 旋转矩阵、欧拉角、四元数、轴/角之间的转换
  4. SAP:2019年会有多么不一样?
  5. LTM设备上ping不通网关
  6. sql从某不连续的数字中将其分段并找出缺失的数字并分段
  7. Linux 编译运行查找头文件和库的顺序
  8. 【c++ primer】第八章 函数探幽
  9. 常用的JS与XML结合用法 简单示例
  10. Springboot整合SpringSecurity--对静态文件进行权限管理
  11. [转载] Python与其他语言结合的参数转换函数PyArg_ParseTuple()
  12. 【VMWare通过vmdk文件创建虚拟机】
  13. 深度分析|2017阿里双十一1682亿背后的营销隐秘
  14. JAVA公司网站系统毕业设计 开题报告
  15. swift语言前景_swift语言从天而降,作为ios程序猿,我们如果面对?
  16. java中的this的用法_java中this的用法
  17. 制作ubuntu18.04启动盘 + 安装ubuntu18.04
  18. linux系统32和64的区别,32位和64位的Linux系统区别
  19. Vortex: 一种基于RISC-V指令集自定义扩展的开源GPGPU架构
  20. 链表综合案例(超市购物车)

热门文章

  1. 记录CTF命令执行练习中遇到的几道题(一些PHP命令过滤的绕过方法)
  2. xp怎么修改桌面图标?
  3. ffmpeg源码精读1,音视频处理概述
  4. 爱玩手机的猫git学习笔记(持续更新)
  5. 免费抠图神器!五秒在线搞定抠图
  6. 让WP-Advanced-PDF插件支持中文
  7. php的lumen框架,Lumen框架“服务容器”源码解析
  8. gmai邮箱怎么注册啊
  9. 3dmax:3dmax三维VR渲染设置(VR发光贴图、VR灯光缓存、V-Ray焦散,渲染图中出现黑斑点的原因、插值类型)之详细攻略
  10. Docker 多阶级构建:Docker 下如何实现镜像多阶级构建?