今天看啥  ›  专栏  ›  Alyna_C

【基础】学习笔记48-Python3 matplotlib绘图-箱型图2

Alyna_C  · 简书  ·  · 2020-12-26 00:05

箱型图或盒图:从文件获取数据,使用两种方法画箱线图

代码如下:

<注,提取文件数据时,文件地址与文件要对应上>

# 箱型图或盒图:从文件获取数据,使用两种方法话箱线图

import matplotlib.pyplot as plt

import pandas as pd

import seaborn as sns

plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']

# ==========提取文件数据=============

datafile = 'D:\\python\\__self projects__\\basic projects\\_01_Drawing\\matplotlib\\file\\datingTestSet2.txt'  # txt文件位置

data = pd.read_csv(datafile, sep='\t')

'''

# 方法一:matplotlib画图

def Group(data):  # 筛选文件数据

temp = []

group = data.感兴趣程度.unique()  # 得到group为[3,2,1]

for g in group:  # 将按照感兴趣等级,提取飞行里程数据到数组temp

d = data.飞行里程[data.感兴趣程度 == g]

temp.append(d)

return temp

def Xticks(data):  # 给各箱线图添加数据标签

for i in range(len(Group(data))):

mx = int(Group(data)[i].describe()['max'])

mi = int(Group(data)[i].describe()['min'])

q1 = int(Group(data)[i].describe()['25%'])

q2 = int(Group(data)[i].describe()['50%'])

q3 = int(Group(data)[i].describe()['75%'])

up = int(q3+1.5*(q3-q1))

down = int(q1 - 1.5 * (q3 - q1))

xtext = [mi, down, q1, q2, q3, up]

for j in xtext:

# plt.text(x, y, string, weight="bold", color="b")

plt.text(j-500, i+1.25, j, fontsize=11.1)

# ============绘制箱线图=============

box1, box2, box3 = Group(data)[0], Group(data)[1], Group(data)[2]

plt.figure(figsize=(12, 7))

plt.boxplot((box1, box2, box3), vert=False, showmeans=False)

# ============设置箱线图参数=============

plt.ylabel("好感程度", fontsize=16.0)  # y坐标标签

plt.title("飞行里程", fontsize=20.0)  # 图标题

# plt.yticks(fontsize=15.0)

plt.xticks(np.arange(0, 100000, step=8000))

Xticks(data)

plt.show()

'''

# 方法二:使用seaborn库

plt.figure(figsize=(15, 7))

sns.boxplot('飞行里程', '感兴趣程度', data=data, orient='h')

plt.ylabel('好感程度', fontsize=20.0)

plt.xlabel('飞行里程', fontsize=20.0)

plt.yticks(fontsize=15.0)

plt.grid(axis='x', linestyle=':')

plt.show()





原文地址:访问原文地址
快照地址: 访问文章快照