根据json文件数据绘制箱型图ax.boxplot()

 1. 绘制箱型图

首先,确定你的数据是什么结构!!是一行有很多数据用逗号隔开,还是一行一个数据

不弄清楚你的数据存储结构就无法正确写出程序。通常会出现ax.boxplot()度错误​​​​​​​

在本例中,有三个json文件,格式如下:(一行一个数据)

....
68.25
65.0
64.5
54.5
83.75
54.5
80.67
78.0
63.0
53.5
....

分别画出这三组数据的箱型图: 

import json
import matplotlib.pyplot as plt
# 读取json文件中的数据
with open('../data_path/CelebA.json', 'r') as f:
    data1 = [float(x.strip()) for x in f.readlines()]
with open('../data_path/AAF.json', 'r') as f:
    data2 = [float(x.strip()) for x in f.readlines()]
with open('../data_path/LaPa.json', 'r') as f:
    data3 = [float(x.strip()) for x in f.readlines()]
    
# 绘制三个箱型图
fig, ax = plt.subplots()
ax.boxplot([data1, data2, data3], showfliers=False, showmeans=True)
ax.set_xticklabels(['CelebA', 'AAF', 'LaPa'])
#ax.set_xlabel('Data Set') # 横坐标介绍,在label下面。。弄上去不大好看
ax.set_ylabel('Eye Height')
ax.set_title('Boxplot of Target Altitude')

plt.savefig('Boxplot of 22222 Target Altitude.jpg')

注意点:

 1. json文件里不能包含空值(不能含有空白的回车)!!!!必须全部都是数字!!

 2. 虽然保存眼部高度的时候在json是一行一个数据,但到这边用的时候不能一行一个,必须要变成多个数据在一行的情况,比如[2,3,55,66] 所以,使用f.readlines()方法读取文件的每一行数据,strip()方法去除每行数据的换行符,并转换为float类型的数值

如果不按照2的要求先对原始数据进行处理就会报ax.boxplot()维度错。所以一定要注意你原始文件的格式是怎么回事。

总之,最后效果:


2. 分析箱型图

箱形图是一种用作显示一组数据分散情况的统计图,因型状如箱子而得名。箱图最大的优点就是不受异常值的影响,可以以一种相对稳定的方式描述数据的离散分布情况。在箱型图中,一组数据按照从小到大顺序排列后,把该组数据四等分的数,称为四分位数。箱子的上下限,分别是数据的上四分位数和下四分位数。这意味着箱子包含了50%的数据。因此,箱子的宽度在一定程度上反映了数据的波动程度,箱体越扁说明数据越集中,换句话说,当箱型图很短时,意味着很多数据多集中分布在很小的范围内。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值