zoukankan      html  css  js  c++  java
  • 数据分析——作图(Python)

    一、基础设置

    导入相关的库

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    %matplotlib inline   #在ipython总显示图表
    

    默认不显示中文,因此需要更改设置,显示中文 

    #显示中文
    import matplotlib as mpl 
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False  

    设置全局变量

    mpl.rc('font',size=12)  #字体
    mpl.rc('figure',figsize=(8,6))  #图像大小
    mpl.rc('axes.spines',right=False,top=False)  #设置右边上边的横线是否显示
    

    二、导入数据,并查看

    data = sns.load_dataset('tips')
    data.head()
    #字段含义分别是:总消费,小费,性别,是否吸烟,周末,时间,几个人

     

    三、作图(matplotlib)

    1、折线图

    fig,ax = plt.subplots()  #fig主要设置一些全局的变量,而ax主要负责画图
    ax.plot(data.index,data['total_bill'])
    fig.set_size_inches(12,6) #重新设置大小
    plt.title('折线图标题',fontsize=22)  #标题,更改字体大小
    ax.set_xlabel('X轴',fontsize=18) #设置x轴,y轴的标题
    ax.set_ylabel('Y轴',fontsize=18)
    plt.yticks(fontsize=14) #刻度字体大小
    plt.xticks(fontsize=14)
    plt.legend(['标签'],fontsize=15)  #标签内容字体大小
    plt.savefig('折线图',dpi=100)  #保存图片,可以设置dpi
    

    2、柱形图

    data_bar1 = data['tip'].groupby(data['day']).mean() #统计数据,按照星期来分组
    data_bar2 = data['tip'].groupby(data['time']).mean() #统计数据,按照星期来分组
    error = data['tip'].groupby(data['time']).std() 
    fig,ax = plt.subplots(1,2)   #画出两个区域
    ax[0].bar(data_bar1.index,data_bar1.values)  #第一个区域怎么画
    ax[0].set_xlabel('小费星期关系图',fontsize=16)
    ax[0].set_ylabel('小费',fontsize=16)
    ax[0].legend(['星期'])
    ax[0].set_ylim(0,4)  #设置Y轴最大最小值
    
    ax[1].bar(data_bar2.index,data_bar2.values) #第二个区域怎么画
    ax[1].errorbar(data_bar2.index,data_bar2.values,yerr = error,ls = 'none',color='#96CDCD',lw=6)  #加入方差图
    ax[1].legend(['午晚餐'])
    ax[1].set_xlabel('小费午晚餐关系图',fontsize=16)
    ax[1].set_xticklabels(['晚餐','午餐'])   #更改坐标轴的名称
    ax[1].set_ylim(0,4)  #设置Y轴最大最小值
    
    fig.set_size_inches(12,6)  #设置整个图的大小
    plt.savefig('柱形图',dpi=100)  #保存图片,可以设置dpi
    

    3、横轴的柱形图

    data_barh = data['tip'].groupby(data['sex']).mean()  #统计数据,男女小费
    fig,ax = plt.subplots()
    ax.barh(data_barh.index,data_barh.values,0.4)  #0.4是宽度
    fig.set_size_inches(6,2)
    plt.title('横着的')
    ax.set_ylabel('性别',fontsize=20)
    ax.set_xlabel('小费',fontsize = 20)
    plt.xticks(fontsize=14)
    ax.set_yticklabels(['男性','女性'])
    

      

    4、饼图

    data_pie = data['size'].groupby(data['size']).size()
    fig,ax = plt.subplots()
    ax.pie(data_pir,autopct='%1.1f%%',labels=data_pie.index,colors = ['#B0E0E6','#B0C4DE','#A6A6A6','#FF3E96','#FFB5C5','#FFEBCD'])
    #数据源,显示的数值,显示标签,颜色
    fig.set_size_inches(8,8)  #如果两个数字不相等会变成椭圆
    

     

    5、散点图

    fig,ax = plt.subplots()
    ax.scatter(data['tip'],data['total_bill'])
    fig.set_size_inches(8,6)
    ax.set_xlabel('小费',fontsize=18)
    ax.set_ylabel('总消费',fontsize=18)
    plt.xticks(fontsize=12)
    plt.yticks(fontsize=12)
    

      

    6、几个区域的画图方法(一种是用上面的柱形图那种方法  fig,ax = plt.subplots(1,2),另一种是下面的这种,这种可以自定义占据的空格数)

    fig = plt.figure()
    ax1 = plt.subplot2grid((2,3),(0,0))
    ax1.bar(data_bar.index,data_bar.values)
    fig.set_size_inches(12,6)
    ax2 = plt.subplot2grid((2,3),(0,1),colspan=2)#占据几个空额,也可以是rowspan,一个是横的,一个是竖的
    ax2.scatter(data['tip'],data['total_bill'])
    ax3 = plt.subplot2grid((2,3),(1,0))
    ax3.barh(data_barh.index,data_barh.values)
    

    7、两根柱形图对比

    fig,ax = plt.subplots()
    ax.bar(np.arange(4),data_bar.values,0.3)    #横坐标先用数字代替
    ax.bar(np.arange(4)+0.3,data_bar.values*2,0.3)   #偏移一定量
    ax.set_xticks(np.arange(4)+0.15)   #重新设置x轴的位置
    ax.set_xticklabels(data_bar.index)   #重新设置名称
    

      

    四、作图(seaborn)

      

     

      

      

      

  • 相关阅读:
    趣谈多线程
    使用application manifest file
    参加一个.NET培训后的若干笔记
    遍历sql server数据库的简单方法
    为什么对继承的方法签名检查这么严格?
    Serialize Dictionary to xml using DataContractSerializer
    如何在sql中查询xml字符串
    从PowerDesigner概念设计模型(CDM)中的3种实体关系说起
    using "code coverage coloring" to help debuging
    日常工作中用到过的PowerShell指令
  • 原文地址:https://www.cnblogs.com/jiegege/p/8461756.html
Copyright © 2011-2022 走看看