• python学习笔记38:matplotlib


    import matplotlib.pyplot as plt
    import numpy as np
    
    # %matplotlib notebook
    # from IPython import display
    # %matplotlib inline
    

    1 通过figure创建画布

    # 简单实例
    data = np.random.randn(100).cumsum()   # 标准正态分布100样本值,在累计求合
    plt.plot(data)
    plt.show()
    

    png

    # 创建空白画布,返回figure实例
    plt.figure(num=1, figsize=(10,10),dpi=200,facecolor='gray',edgecolor='r')
    
    <Figure size 2000x2000 with 0 Axes>
    
    
    
    
    <Figure size 2000x2000 with 0 Axes>
    
    • num=None, 图编号
    • figsize=None, 图大小
    • dpi=None, 图分辨率
    • facecolor=None, 背景颜色
    • edgecolor=None, 边框颜色
    plt.plot(data)  # 没有什么变化,没明白怎么回事
    plt.show()
    

    png

    2 通过subplot创建单个子图

    data = np.random.randn(10).cumsum()
    plt.subplot(221)  # 把画布分成4份,在第一份上画图221等同于2,2,1
    plt.plot(data)
    
    plt.subplot(222)
    plt.plot(data)
    
    plt.subplot(212) # 把画布分成2份,在第二份上画图
    plt.plot(data)
    
    [<matplotlib.lines.Line2D at 0x119fcbe80>]
    

    3 通过subplots创建多个子图

    # 在notebook上这里有坑,所有代码要写在一个cell里面才能显示图片出来,不能拆开
    fig,axes = plt.subplots(1,2)
    data = np.random.randn(20).cumsum()
    axes[0].plot(data,'g--')
    axes[1].plot(data**2,'ko--')
    plt.show()
    

    4 通过add_subplot添加和选中子图

    fig = plt.figure()
    fig.add_subplot(1,2,1)
    fig.add_subplot(1,2,2)
    plt.plot(data)
    plt.show()
    

    5 添加各类标签

    除图例要最后放之外,其他无先后顺序

    • title() 标题
    • xlabel() x 轴名称
    • ylabel() y 轴名称
    • xticks() x 轴刻度数目及取值
    • xlim() x轴取值范围
    • legend() 图例
    plt.plot(data)
    plt.title('demo')
    plt.xlabel('x轴')
    plt.xticks([0,10,20])
    plt.legend('x=y')
    plt.show()
    

    # 上图中x轴有中文没有正常显示
    from  matplotlib.pylab import mpl
    mpl.rcParams['font.sans-serif'] = ['Arial Unicode MS']
    
    plt.plot(data)
    plt.title('demo')
    plt.xlabel('x轴')
    plt.xticks([0,10,20])
    plt.legend('x=y')
    plt.show()
    

    6 常见图表

    • plt.bar 条形图
    • plt.barh 水平条形图
    • plt.hist 直方图
    • plt.pie 饼图
    • plt.scatter 散点图
    • plt.plot 折线图
    • plt.boxplot 箱像图
    • plt.stackplot 堆积图
    # 直方图
    # 直方图(Histogram)是一种可视化在连续间隔,或者是特定时间段内数据分布情况的图表,经常被用在统计学领域。
    # 简单来说,直方图描述的是一组数据的频次分布,例如把年龄分成“0-5,5-10,……,80-85”17个组,统计一下中国人口年龄的分布情况。
    # 直方图有助于我们知道数据的分布情况,诸如众数、中位数的大致位置、数据是否存在缺口或者异常值
    data = np.random.randint(0,100,100)
    plt.hist(data, 
             bins=8,  # 条柱的个数
             color='g',
            alpha=0.5)  # 透明度
    
    (array([11.,  6., 19., 12., 13., 17., 13.,  9.]),
     array([ 0.  , 12.25, 24.5 , 36.75, 49.  , 61.25, 73.5 , 85.75, 98.  ]),
     <a list of 8 Patch objects>)
    

    # 柱状图
    x = np.arange(5)
    y1, y2 = np.random.randint(1,31,size=(2,5))
    width = 0.25
    ax = plt.subplot(1,1,1)
    ax.bar(x,y1,width,color='b')
    ax.bar(x+width,y2,width,color='r')
    ax.set_xticks(x+width)
    ax.set_xticklabels(['a','b','c','d','e'])
    plt.show()
    

    • 直方图展示数据的分布,柱状图比较数据的大小
    • 直方图x轴为定量数据,柱状图x轴为分类数据

    参考链接:能分清直方图和柱状图,你就是图表届的“头号”玩家

    color

    • b 蓝 g绿 r红 c青 y黄 k黑 w白

    marker

    • o 实心圆圈 D菱 h六边形 .点 s正方形

    linestyle

    • -实线 --长虚线 -.短点相间线 :短虚线

    7 本地保存图形

    # savefig()
    data = np.random.randn(100)
    plt.plot(data)
    plt.savefig('zxt.png')  # 要先保存在show(),否则是一张空图
    plt.show()
    

    8 seaborn 绘制统计图形

    # diplot 单变量分布绘制函数
    # jointplot 双变量分布绘制函数
    import seaborn  as sns
    import numpy as np
    import pandas as pd
    
    sns.set()  # 显示调用,获取默认绘图
    np.random.seed(0)    # 确定随机种子,保证每次执行生成的数字时一样的
    arr = np.random.randn(100)  # 标准正态分布的100个样本值
    ax = sns.distplot(arr,bins=10) # 默认绘制核密度函数,方便查看数据分布情况,参数kde=True控制
    

    df_obj = pd.DataFrame({"x": np.random.randn(100),
                          "y": np.random.randn(100)})
    sns.jointplot(x="x",y="y",kind='scatter',data=df_obj) # 参数ratio来设置中心图与侧边图的大小比,默认为5
    
    <seaborn.axisgrid.JointGrid at 0x1a1b0f5c18>
    

    # 二维直方图
    sns.jointplot(x="x",y="y",kind='hex',data=df_obj) 
    
    <seaborn.axisgrid.JointGrid at 0x1a1aefe400>
    

    # 核密度图
    sns.jointplot(x="x",y='y',data=df_obj,kind='kde')
    
    <seaborn.axisgrid.JointGrid at 0x1a1bfcb390>
    

    # sns.pairplot 绘制数据集与变量之间的关系
    data = sns.load_dataset("tips")
    sns.pairplot(data)
    
    <seaborn.axisgrid.PairGrid at 0x1a1c24ef98>
    

    # 用分类数据来绘图
    # sns.swarmplot() sns.stripplot() 分类散点图
    # sns.boxenplot() sns.violinplot 分布图
    # sns.barplot sns.pointplot 统计估计图
    
    sns.stripplot(x='day',y='total_bill',data=data)  # 参数jitter 来控制数据展示
    
    <matplotlib.axes._subplots.AxesSubplot at 0x1a1d2a1630>
    

    sns.swarmplot(x='day',y='total_bill',data=data) # 数据不会重叠
    
    <matplotlib.axes._subplots.AxesSubplot at 0x1a1cfa1470>
    

    sns.boxenplot(x='day',y='total_bill',data=data)
    
    <matplotlib.axes._subplots.AxesSubplot at 0x1a1cf6d278>
    

    sns.violinplot(x='day',y='total_bill',data=data)
    
    <matplotlib.axes._subplots.AxesSubplot at 0x1a1b1a7b00>
    

    
    
  • 相关阅读:
    菜鸟解决“子页面关闭刷新父页面局部”问题的历程
    ORACLE基本SQL语句-查询篇
    ORACLE基本SQL语句-添加更新数据函数篇
    ORACLE基本SQL语句-用户及建表篇
    关于JVM
    调用微信支付接口总结
    Oracle入门
    C#使用 SharpAVI进行 屏幕录制
    window 下编译cef 内核 加入mp3/mp4 支持
    python 模块 optparse
  • 原文地址:https://www.cnblogs.com/zheng1076/p/11453539.html
Copyright © 2020-2023  润新知