zoukankan      html  css  js  c++  java
  • Matplotlib:绘图和可视化

    Matplotlib:绘图和可视化

    img

    1、简介

    Matplotlib是一个强大的Python绘图和数据可视化的工具包。数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值、必要的一些数据转换等。完成数据分析的最终结果也许就是做一个可交互的数据可视化。

    安装方式:

    pip install matplotlib

    引用方法:

    import matplotlib.pyplot as plt

    2、简单绘制线形图

    plt.plot()   # 绘图函数
    plt.show()   # 显示图像
    

    在jupyter notebook中不执行这条语句也是可以将图形展示出来

    import matplotlib.pyplot as plt
    import numpy as np
    data = np.arange(10)
    plt.plot(data)
    plt.show() # 显示图像,在notebook中不执行这一句也可以
    

    执行结果:

    matplot1

    虽然seaborn这些库和pandas的内置绘图函数能够处理许多普通的绘图任务,如果需要自定义一些高级功能的话就必须要matplotlib API.

    3、plot函数

    plot函数:绘制折线图

    • 线型linestyle(-,-.,–,…)
    • 点型marker(v,^,s,*,H,+,X,D,O,…)
    • 颜色color(b,g,r,y,k,w,…)
    plt.plot([0,3,9,15,30],linestyle = '-.',color = 'r',marker = 'o') 
    

    matplot2

    图像标注

    方法 描述
    plt.title() 设置图像标题
    plt.xlabel() 设置x轴名称
    plt.ylabel() 设置y轴名称
    plt.xlim() 设置x轴范围
    plt.ylim() 设置y轴范围
    plt.xticks() 设置x轴刻度
    plt.yticks() 设置y轴刻度
    plt.legend() 设置曲线图例
    plt.plot([0,3,9,15,30],linestyle = '-.',color = 'r',marker = 'o',label="A") 
    plt.plot([1,3,16,23,30],[30,23,13,25,30],label='B')
    plt.title("Title")  # 标题
    plt.xlabel('X')  # x轴名称
    plt.ylabel('Y')  # y轴名称
    
    plt.xticks(np.arange(0,30,2))  # x轴刻度
    plt.xlim(-0.2,10,2)  # x轴范围
    plt.legend()  # 曲线图例
    

    运行图例:

    matplot3

    绘制数学函数

    使用Matplotlib模块在一个窗口中绘制数学函数y=x, y=x**2,y=sinx的图像,使用不同颜色的线加以区别,并使用图例说明各个线代表什么函数。

    x = np.arange(-100,100)
    y1 = x
    y2 = x ** 2
    y3 = np.sin(x)
    -----------------------
    plt.plot(x,y1,label="y=x")
    plt.plot(x,y2,label="y=x^2")
    plt.plot(x,y3,label="y=sin(x)")
    
    plt.ylim(-100,100)
    plt.legend()
    

    matplot4

    4、支持的图类型

    函数 说明
    plt.plot(x,y,fmt) 坐标系
    plt.boxplot(data,notch,position) 箱型图
    plt.bar(left,height,width,bottom) 柱状图
    plt.barh(width,bottom,left,height) 横向柱状图
    plt.polar(theta,r) 极坐标系
    plt.pie(data,explode) 饼图
    plt.psd(x,NFFT=256,pad_to,Fs) 功率谱密度图
    plt.specgram(x,NFFT=256,pad_to,F) 谱图
    plt.cohere(x,y,NFFT=256,Fs) X-Y相关性函数
    plt.scatter(x,y) 散点图
    plt.step(x,y,where) 步阶图
    plt.hist(x,bins,normed) 直方图
    # 柱状图
    data = [12,34,23,54]
    labels = ['Jan','Fed','Mar','Apr']
    plt.xticks([0,1,2,3],labels)  # 设置x轴刻度
    plt.bar([0,1,2,3],data)    
    

    柱状图

    # 横向柱状图
    data = [12,34,23,54]
    labels = ['Jan','Fed','Mar','Apr']
    plt.yticks([0,1,2,3],labels)
    plt.barh([0,1,2,3],data)    
    

    横向柱状图

    # DataFrame数组图
    df = pd.DataFrame({
        'Jan':pd.Series([1,2,3],index=['a','b','c']),
        'Fed':pd.Series([4,5,6],index=['b','a','c']),
        'Mar':pd.Series([7,8,9],index=['b','a','c']),
        'Apr':pd.Series([2,4,6],index=['b','a','c'])
    })
    df.plot.bar()  # 水平柱状图,将每一行中的值分组到并排的柱子中的一组
    df.plot.barh(stacked=True,alpha=0.5)  # 横向柱状图,将每一行的值堆积到一起
    

    数组图

    # 饼图
    plt.pie([10,20,30,40],labels=list('abcd'),autopct="%.2f%%",explode=[0.1,0,0,0])  # 饼图
    plt.axis("equal")
    plt.show()
    
    

    饼图

    # 散点图
    import random
    x = np.random.randn(100)
    y = np.random.randn(100)
    plt.scatter(x,y)
    
    

    散点图

    5、保存图表到文件

    plt.savafig(‘文件名.拓展名’)

    文件类型是通过文件扩展名推断出来的。因此,如果你使用的是.pdf,就会得到一个PDF文件。

    plt.savefig('123.pdf')
    

    savefig并非一定要写入磁盘,也可以写入任何文件型的对象,比如BytesIO:

    from io import BytesIO
    buffer = BytesIO()
    plt.savefig(buffer)
    plot_data = buffer.getvalue()
    
    参数 说明
    fname 含有文件路径的字符串或者Python的文件型对象。
    dpi 图像分辨率,默认为100
    format 显示设置文件格式(“png”,“jpg”,“pdf”,“svg”,“ps”,…)
    facecolor、edgecolor 背景色,默认为"W"(白色)
    bbox_inches 图表需要保存的部分。设置为”tight“,则尝试剪除图表周围空白部分
    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    Python自动化运维之1、Python入门
    Github使用教程
    Windows 托盘区域显示图标
    VS 2013 打包程序教程
    UML类图简单介绍
    crontab定时任务
    软硬链接的区别和重点
    linux运维之NFS服务器配置
    怎么样让Win10可以ping通?
    VM虚拟机Linux克隆后网卡的相关操作!
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863767.html
Copyright © 2011-2022 走看看