matplotlib、seaborn 绘制多图

对于这种不常用,但有时候做分析又会用的到,因为绘图用的少,总是会在生产中被卡壳。谨以此记录python 的漫漫路

源代码是在jupyter-lab上面写的,为了方便阅读,就全部放在了一起。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

### 查看分类数据的不同属性值的表现差异
rn = np.random.randn(100,2)
rn1 = np.random.randint(10,size=(100,2))

# 造数据, 这个环节随便造, 当时是想到哪儿写到哪儿
rndf = pd.DataFrame(data=rn,columns=['r1','r2'])
rndf['flg'] = 'bad'
rndf1 = pd.DataFrame(data=rn1,columns=['r1','r2'])
rndf1['flg'] = 'god'
rnd = pd.concat([rndf,rndf1])

rnd['r3'] = np.random.randint(10,size=(200,1))
rnd['r4'] = np.random.randint(low=-10, high=10, size=(200,1))
rnd['r5'] = np.random.randint(low=10, high=100, size=(200,1))
rnd['r6'] = np.random.randint(low=60, high=100, size=(200,1))
rnd['r7'] = np.random.randint(low=-100, high=100 ,size=(200,1))

# 重点编写函数

def show_graph(df, lst):
    """
    批量绘制box分布图形, 适用于分类标签的不同指标值的分布数据查看, 对于指标值很多的时候比较适用
    df : DataFrame数据
    lst : 需要绘制图形的字段
    """
    sns.set()
    fig = plt.figure(figsize=(16,10)) # 这里的画布大小还是先设置好吧。
    for i in range(len(lst)):
    	# 遍历每张子图
        ax = fig.add_subplot(2, 4, i + 1)
        sns.boxplot(x='flg', y=lst[i], hue='flg', data=rnd, ax=ax, meanline=True, showmeans=True, )
        # 单独设置了每个子图的标题, 为了方便查看, 也可以省略
        ax.set_title(lst[i]+'_index_contrast')
        # 设置子图之间的横纵边距, 不然会挤到一块, 影响阅读
        plt.subplots_adjust(wspace=0.3,hspace=0.3)

# 函数调用
cols = []
# 提取需要绘图的字段, 遍历所有字段, 做下判断收入即可
for ls in list(rnd.columns.unique()):
    if ls.startswith('r'):
        cols.append(ls)
        
show_graph(df=rnd, lst=cols)
plt.savefig('boxplots.png',dpi=1000)
# 下图为保存在本地的图片

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值