使用pandas同时画两个箱线图

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()

在这里插入图片描述

参考网站:

  1. matplotlib:先搞明白plt. /ax./ fig再画
  2. 如何在 Matplotlib 中旋转 X 轴刻度标签文本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值