Python3数据分析入门实战_06 绘图可视化 Matplotlib

版权声明:未经博主本人同意,请勿私自转发分享。 https://blog.csdn.net/Nerver_77/article/details/85279895
4. 绘图可视化之Matplotlib

写在开头,matplotlib 是 可用于Python脚本PythonIPython shellJupyterWeb应用程序の可视化 2D绘图库

  • Matplotlib Architecture(架构简述)

    • Backend:图表显示位置的控制
    • Artist:图表显示样式
    • Scripting:pyplot等语法API进行绘图
  • 主要方法:plot()

    • show()

      import numpy as np
      import matplotlib.pyplot as plt
      a = [1,2,3]
      plt.plot(a)
      plt.show() # 在jupyter中可采用下述 magic func 减少show()方法的重复使用
      

      在这里插入图片描述

    • magic function:IPython中将任何第一个字母为%的行视为Magic函数的特殊调用,可以控制IPython,为其增加许多系统功能。

      • %matplotlib inline:可以在Ipython编译器里直接使用,功能是可以内嵌绘图,并且可以省略掉plt.show()这一步操作。
      • %timeit:对于任意语句,它会自动多次执行以产生一个非常精确的平均执行时间。
    • plot()相关属性举例

      # 准备数据
      t = np.arange(0.0, 2.0, 0.1)
      s = np.sin(t*np.pi)
      # plot()绘图 label为该图表线标签,于legend()控制label是否展示
      # 'b--':代表蓝色,线style为 --
      plt.plot(t, s, 'b--',label='aaaa')
      plt.plot(t*2, s ,'r--',label='bbbb')
      # 添加坐标轴标签
      plt.xlabel('this is x')
      plt.ylabel('this is y')
      plt.legend()
      

    在这里插入图片描述
    更多API用法请见:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html?highlight=plot#module-matplotlib.pyplot

  • subplot(line, column, position)

    • 分模块区域画图

      # subplot()切换子图(行,列,位置) 
      # 模块1
      plt.subplot(2, 2, 1)
      plt.plot(x, y1, 'b--', label='sin(x*pi)')
      plt.ylabel('y1 value')
      # 模块2
      plt.subplot(2, 2, 2)
      plt.plot(x, y2, 'r--', label='sin(x*pi)')
      plt.ylabel('y2 value')
      # 模块3
      plt.subplot(2, 2, 3)
      plt.plot(x, y2, 'r*', label='sin(x*pi)')
      plt.ylabel('y1 value')
      # 模块4
      plt.subplot(2, 2, 4)
      plt.plot(x, y1, 'b*', label='sin(x*pi)')
      plt.ylabel('y1 value')
      

      在这里插入图片描述

    • subplots():方法会返回画图对象和坐标对象ax,figsize是子图长宽信息

      figure, ax = plt.subplots(2,2)
      # 分别在[0][0] 和 [1][1] 区域绘图
      ax[0][0].plot(x, y1, 'b--')
      ax[1][1].plot(x, y2, 'g--')
      

    在这里插入图片描述

写在开头,Series以及DataFrame均含有plot()方法进行绘图,API相关如下:

Series.plot()http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.plot.html#pandas.Series.plot

Series.plot(kind='line', ax=None, figsize=None, use_index=True, title=None, grid=None, 
legend=False, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, 
xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, 
xerr=None, label=None, secondary_y=False, **kwds)

DataFrame.plot()http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.plot.html

DataFrame.plot(x=None, y=None, kind='line', ax=None, subplots=False, sharex=None, 
sharey=False, layout=None, figsize=None, use_index=True, title=None, grid=None, 
legend=True, style=None, logx=False, logy=False, loglog=False, xticks=None, yticks=None, 
xlim=None, ylim=None, rot=None, fontsize=None, colormap=None, table=False, yerr=None, 
xerr=None, secondary_y=False, sort_columns=False, **kwds)
  • Series绘图

    # 累加和
    s1 = Series(np.random.randn(10)).cumsum()
    s2 = Series(np.random.randn(10)).cumsum()
    # 绘图
    s1.plot(kind='line', label='S1', title='this is a series', grid=True)
    s2.plot(label='S2',grid=True)
    plt.legend()
    

    在这里插入图片描述

    # 通过子图绘制多个图表
    fig, ax = plt.subplots(2, 1)
    ax[0].plot(s1)
    ax[1].plot(s2)
    

    在这里插入图片描述

  • DataFrame绘图

    # 构造数据框
    df = DataFrame(
      np.random.randint(1,10,40).reshape(10,4),
      columns=['A','B','C','D']
    )
    # 默认按列画图 [横向柱状图、使用堆叠效果]
    df.plot(kind='barh', stacked=True)
    

    在这里插入图片描述

    # 快速按行画图,转置数据框后操作
    df.T.plot()
    # 循环按行画图
    for i in df.index:
        df.iloc[i].plot(label=str(i))
    plt.legend()
    plt.show()
    # 效果同上
    

    在这里插入图片描述

    # 按照某一列画图
    df['A'].plot(kind='bar')
    

    在这里插入图片描述

    #按照某一行画图 [基于index]
    df.iloc[5].plot(kind='bar')
    

    在这里插入图片描述

  • 直方图和密度图

    s = Series(np.random.randn(1000))
    
    • 直方图:hist()

      plt.hist(s,rwidth=0.8, color='r', bins=20)
      

    在这里插入图片描述

    • 密度图:plot(kind='kde')

      s.plot(kind='kde')
      

    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Nerver_77/article/details/85279895