zoukankan      html  css  js  c++  java
  • 数据可视化——Matplotlib(1)

    导入相关模块

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

    基本图表

    散点图:scatter

    N = 1000
    x = np.random.randn(N)
    y = np.random.randn(N)
    
    plt.scatter(x,y)
    plt.show()
    

    scatter的函数签名如下

    scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,verts=None,edgecolors=None,hold=None,data=None,**kwargs)
    
    • x,y:形如shape(n,)的数组
    • s:点的大小,默认20
    • c:点的取色序列,默认蓝色
    • marker:点的形状,默认是圆(具体的点的形状可以在matplotlib的官网中搜索markers查看。)
    • alpha:点的透明度
    • edgecolors:边缘颜色
    plt.scatter(x,y,c='rykgm',s=100,marker='>')
    plt.show()
    

    plt.scatter(x,y,alpha=0.5)
    plt.show()
    

    plt.scatter(x,y,edgecolors='r')
    plt.show()
    

    柱状图:bar

    data = [5, 20, 15, 25, 10]
    
    plt.bar(range(len(data)), data)
    plt.show()
    

    bar的函数签名如下:

    bar(left, height, width=0.8, bottom=None, **kwargs)
    

    事实上,left,height,width,bottom这四个参数确定了柱体的位置和大小,具体定位如下:

    • (left - width / 2, bottom)为左下角位置
    • (left + width / 2, bottom + height)为右上角位置
    plt.bar([0.3,1.7,4,6,7], data, width=0.6,bottom=[10,0,5,0,5])
    plt.show()
    

    对于柱状图,还可以设置以下参数:

    • 颜色:color
    • 描边:edgecolor(ec):边缘颜色;linestyle(ls):边缘样式;linewidth(lw):边缘粗细
    • 填充:hatch:可取值为: / , , | , - , + , x , o , O , . , *
    • 位置标志:tick_label
    labels = ['Tom', 'Dick', 'Harry', 'Slim', 'Jim']
    plt.bar(range(len(data)),data, color='rgb',ec='r',ls='--',lw=2,hatch='o',tick_label=labels)
    plt.show()
    

    堆叠柱状图

    通过bottom参数,可以轻松实现堆叠柱状图

    size = 5
    x = np.arange(size)
    a = np.random.random(size)
    b = np.random.random(size)
    
    plt.bar(x, a, label='a')
    plt.bar(x, b, bottom=a, label='b')
    plt.legend()
    plt.show()
    

    并列柱状图

    并列柱状图则需要通过left属性添加偏移量来实现

    total_width, n = 0.8, 2
    width = total_width / n
    x = x - (total_width - width) / 2
    
    plt.bar(x, a,  width=width, label='a')
    plt.bar(x + width, b, width=width, label='b')
    plt.legend()
    plt.show()
    

    条形图

    类似bar方法,仅换了方法名称:barh(bar-horizontal)

    plt.barh(range(len(data)), data)
    plt.show()
    

    barh的签名为

    barh(bottom, width, height=0.8, left=None, **kwargs)
    

    因此,使用时可以看成是bar的旋转,其方法完全一样

    正负条形图

    可以通过barh方法轻松获得

    a = np.array([5, 20, 15, 25, 10])
    b = np.array([10, 15, 20, 15, 5])
    
    plt.barh(range(len(a)), a)
    plt.barh(range(len(b)), -b)
    plt.show()
    

    折线图:plot

    a = np.array([5, 20, 15, 25, 10])
    
    plt.plot(a)
    plt.show()
    

    和柱状图类似,plot也提供了一些常用的参数,折线图含有两种对象:点和线,因此,可以分别对点和线进行设置,对线的设置与柱状图类似,参数有ls、lw;对点的设置可以参照scatter中的参数,为了区分点和线,规定在点参数前添加一个字母m(marker)来表示,至于线的颜色,可以通过color(c)参数来设置。因此,一个简单的参数设置可以如下表示:

    plt.plot(a, color='r',ls='--',lw=2,marker='o',mec='b',ms=10, mfc='w')
    plt.show()
    

    plot还提供了一个更简洁的方法:合并color、marker、linestyle三个参数为一个字符串,方便设置。

    plt.plot(a,'ro--')
    plt.show()
    

    在做数据可视化的时候,常用的基本图表有折线图、散点图和柱状图三种,其它诸如饼图、箱形图等出现较少,第一部分暂不处理。有了这些图标已经可以做一些基本的分析了,下一节中,将介绍一些常用的设置,诸如坐标轴、标签等。

    参考

  • 相关阅读:
    weblogic部署应用程序(转)
    Eclipse配置weblogic 10(转)
    设计模式之四:抽象工厂(披萨店生产披萨模拟流程)
    设计模式之七:适配器模式(火鸡转换成鸭子)
    ES6Array的扩展方法
    JavaScript闭包
    JavaScript函数进阶
    古龙语录
    JavaScript递归
    ES6let和const
  • 原文地址:https://www.cnblogs.com/magle/p/7389240.html
Copyright © 2011-2022 走看看