pandas 画箱线图
测试文件:https://codechina.csdn.net/u014467816/ktools/-/blob/master/%E4%B8%A4%E4%B8%AA%E7%AE%B1%E7%BA%BF%E5%9B%BE.csv
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams["font.family"] = ["sans-serif"] # 设置以支持汉字
plt.rcParams["font.sans-serif"] = ['SimHei'] # 黑体
# 读取文件信息
allInfo = pd.read_csv('test.csv',sep='\t')
# 根据type类型分组,分别画出两个箱线图,vert设置箱线图的方向,图片大小为16*6
# Axes为两个`axes`类,axes是fig的组成部分
Axes = allInfo.groupby('type').boxplot(vert=True,figsize=(16,4))
i = 0
for ax in Axes:
ax.set_ylabel('属性值')
if i == 1:
i += 1
# 对axes进行遍历,分别设置横轴的label属性
# 文字对其方式为:居中,即与tick对齐
ax.set_title('boxplot-%s'%i)
labels = allInfo.columns[2:]
ax.set_xticklabels(labels,ha='center')
# 设置文字的方向,字号,颜色
ax.xaxis.set_tick_params(rotation=70,labelsize=12,colors='y')
else: # 把横轴label换成表格
i += 1
ax.set_title('boxplot-%s'%i)
table = allInfo.describe()
tableText = [
np.array(table.loc['75%'].apply(int)),
np.array(table.loc['50%'].apply(int)),
np.array(table.loc['25%'].apply(int))
]
# 对每个属性进行统计分析
table = allInfo.describe()
# 获取label信息
collabel = allInfo.columns[2:]
rowlabel = ['75%','50%','25%']
tabaxes = ax.table(
cellText=tableText,
rowLabels=rowlabel,
colLabels=collabel,
loc='bottom',
cellLoc='center')
# 清空固有的label信息
ax.set_xticklabels([])
for key, cell in tabaxes.get_celld().items():
row, col = key
# print(row,col,cell.get_text()) # 可以获取对应的文字信息
if row==0: # 表头列
cell.set_text_props(fontsize=8,rotation=90) # property: props
cell.set_height(float(1/7))
else:
cell.set_text_props(fontsize=8,rotation=90)
cell.set_height(float(1/6))
# cell.angle = 90 # 可以将表格进行旋转
# 保存图片
plt.savefig('test.png',bbox_inches='tight',dpi=300)
# plt.show()
参考网站: