如何使用matplotlib让你的数据更加生动

目录
  • 1 引言
  • 2 折线图
  • 3 散点图
  • 4 柱状图
  • 5 饼状图
  • 6 总结

1 引言

Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。

本文就日常生活中常见的业务场景进行展开讨论,更详尽的说明可以参考文档。

2 折线图

折线图(line chart)是我们日常工作、学习中经常使用的一种图表,它可以直观的反映数据的变化趋势。

可视化结果:

直线:左上直线图形显示。曲线:右上带有样式变化和标记的折线预览。

代码如下:

def draw_line():
    N = 8
    t = np.linspace(0, 1, N)
    fig, (axA, axB) = plt.subplots(1, 2)
    # Line
    axA.plot(t, t, marker = 'o')
    axA.set_title('line')
    # Curve
    axB.plot(t, t, linestyle='--', marker='*',c='r', label='linear')
    axB.plot(t, t**2, linestyle='-.', marker='D',c='c', label='quadratic')
    axB.plot(t, t**3, linestyle=':', marker='^',c='y', label='cubic')
    axB.set_title('Curve')
    plt.legend()
    plt.show()

函数说明:

plot([x], y, [fmt], data=None, **kwargs)

  1. 可选参数[fmt] 是一个字符串来定义图的基本属性如:颜色(color),点型(marker),线型(linestyle)
  2. 对于颜色 color=‘r' 代表red 表示红色;color=‘c' 代表cyan 表示蓝绿;color=‘y' 代表yellow表示黄色
  3. 对于线型 linestyle='–' 代表dashed line style 为虚线;linestyle='-.‘代表 dash-dot line style 为点画线; linestyle=':' 代表dotted line style 为点线

3 散点图

散点图用于在水平轴和垂直轴上绘制数据点,它表示了因变量随自变量变化的趋势。通俗地讲,它反映的是一个变量受另一个变量的影响程度。

可视化结果:

散点图:左上散点图可视化,带有颜色变化。气泡图:右上带有颜色变化和刻度的气泡图。

代码如下:

def  draw_scatter():
    N = 128
    x = np.random.rand(N)
    y = np.random.rand(N)
    c = np.random.rand(N)
    s = np.random.rand(N)
    s = np.pi*(32*s)**2

    cmapDisp = cm.get_cmap('rainbow')
    fig, (axA, axB) = plt.subplots(1, 2)
    # scatter
    axA.scatter(x, y, s=8,c=cmapDisp(c),alpha=0.75)
    axA.set_title('scatter')
    # bubble
    axB.scatter(x, y, c=cmapDisp(c), s=s, alpha=0.25, edgecolors='none')
    axB.set_title('bubble')
    plt.show()

函数说明:

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, *, data=None, **kwargs)

  • x,y:表示的是大小为(n,)的数组,也就是我们即将绘制散点图的数据点
  • s:是一个标量实数或者是一个数组大小为(n,),表示点的大小。
  • c:表示的是颜色,是一个可选项。默认是蓝色'b',表示的是标记的颜色,或者可以是一个表示颜色的字符,或者是一个长度为n的表示颜色的序列等等
  • marker:表示的是标记的样式,默认的是'o'。
  • alpha:实数,0-1之间。点的透明度,透明度设置的好能够使图好看。

4 柱状图

柱状图是一种用矩形柱来表示数据分类的图表,柱状图可以垂直绘制,也可以水平绘制,它的高度与其所表示的数值成正比关系。柱状图显示了不同类别之间的比较关系,图表的水平轴 X 指定被比较的类别,垂直轴 Y 则表示具体的类别值。

可视化结果:

柱状图:左上图形以组合在一起的平行柱状图显示。

堆叠柱状图:右上图形显示在堆叠的柱状图上。

代码如下:

def  draw_bar():
    N = 8
    Hx = np.random.randint(18, 65, size=N)
    Mx = np.random.randint(18, 65, size=N)
    Hs = np.random.randint(1, 5, size=N)
    Ms = np.random.randint(1, 5, size=N)
    indice = np.arange(N) + 1
    igrupos = ['G{}'.format(g) for g in indice]
    iidades = np.arange(0, 80, 5)
    larg = 0.25
    fig, (axA, axB) = plt.subplots(1, 2)
    # Bar
    axA.bar(indice - larg, Hx, width=larg, yerr=Hs,color='c', align='edge', label='man')
    axA.bar(indice, Mx, width=larg, yerr=Ms, color='r', align='edge', label='women')
    axA.set_title('Bar')
    axA.set_xticks(indice)
    axA.set_yticks(iidades)
    axA.set_xticklabels(igrupos)
    axA.legend()
    # Barras
    axB.bar(indice, Hx, color='c', label='man', yerr=Hs)
    axB.bar(indice, Mx, color='r', bottom=Hx, label='women', yerr=Ms)
    axB.set_title('Barras ')
    axB.set_xticks(indice)
    axB.set_xticklabels(igrupos)
    axB.set_yticks(iidades*2)
    axB.legend()
    plt.show()

函数说明:

bar(x, height, width, bottom, align)

  • x :一个标量序列,代表柱状图的x坐标,默认x取值是每个柱状图所在的中点位置,或者也可以是柱状图左侧边缘位置。
  • height: 一个标量或者是标量序列,代表柱状图的高度。
  • width: 可选参数,标量或类数组,柱状图的默认宽度值为 0.8。
  • bottom: 可选参数,标量或类数组,柱状图的y坐标默认为None。
  • algin: 有两个可选项 {“center”,“edge”},默认为 ‘center',该参数决定 x 值位于柱状图的位置。
  • bottom: 该参数可以指定柱状图开始堆叠的起始值,一般从底部柱状图的最大值开始,依次类推
  • yerr: 可选参数, 这里针对垂直型误差,以误差棒的形式显示

5 饼状图

饼状图用来显示一个数据系列,具体来说,饼状图显示一个数据系列中各项目的占项目总和的百分比。

可视化结果:

饼图:左上玫瑰图显示两层信息(外层标签和内层比例分布)。

雷达图:右上雷达图形显示,具有基于中心的值和基于径向的变化。

代码如下:

def test_pie():
    etiqueta = list('ABCDEFGHIJKL')
    M, N = 128, len(etiqueta)
    valor = np.random.random(N)*0.9 + 0.1
    var = np.random.random(M)
    # param
    cmapRadial = cm.get_cmap('magma')
    theta = 2*np.pi*np.arange(N)/N
    omega = 2*np.pi*np.arange(M)/M
    valor_ = np.append(valor, [valor[0]])
    var_ = np.append(var, [var[0]])
    theta_ = np.append(theta, [theta[0]])
    omega_ = np.append(omega, [omega[0]])
    raio = 1.25
    mult = 0.15
    # draw
    fig = plt.figure()
    axA = fig.add_subplot(121, aspect='equal')
    axB = fig.add_subplot(122, projection='polar')
    # Pizza
    axA.pie(valor, labels=etiqueta, pctdistance=0.9,autopct='%1.1f%%', radius=1.1)
    axA.pie(var, radius=0.9, colors=cmapRadial(var))
    axA.set_title('Pizza')
    centro = plt.Circle((0,0), 0.75, fc='white')
    axA.add_patch(centro)
    # Radar
    axB.plot(theta_, valor_, marker='o', color='black', label='variable')
    axB.fill_between(theta_, 0, valor_, facecolor='black', alpha=0.25)
    axB.plot(omega_, raio + var_*mult, color='y', label='change')
    axB.plot(omega_, raio - var_*mult, color='y')
    axB.fill_between(omega_, raio - var_*mult, raio + var_*mult,facecolor='y', alpha=0.25)
    axB.set_title('Radar')
    axB.set_xticks(theta)
    axB.set_xticklabels(etiqueta)
    axB.set_rticks(np.linspace(0, 1.5, 7))
    axB.legend()
    plt.show()

函数说明:

pie(x, labels=None, colors=None, autopct=None, pctdistance=0.6, labeldistance=1.1, radius=None)

  • x: 数组序列,数组元素对应扇形区域的数量大小。
  • labels: 列表字符串序列,为每个扇形区域备注一个标签名字。
  • color : 为每个扇形区域设置颜色,默认按照颜色周期自动设置。
  • autopct :控制饼图内百分比设置,可以使用format字符串或者format function
    '%1.1f'指小数点前后位数(没有用空格补齐)
  • labeldistance :label标记的绘制位置,相对于半径的比例,默认值为1.1, 如<1则绘制在饼图内侧;
  • pctdistance :类似于labeldistance,指定autopct的位置刻度,默认值为0.6;
  • radius :控制饼图半径,默认值为1;

6 总结

本文详细地介绍了使用matplotlib画折线图、散点图、饼状图以及柱状图的样例,并给出了相关可视化效果。

到此这篇关于如何使用matplotlib让你的数据更加生动的文章就介绍到这了,更多相关matplotlib数据更生动内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在Python中使用matplotlib模块绘制数据图的示例

    matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中.它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. 这篇我们用matplotlib从构造最简单的bar一步一步向复杂的bar前行.什么是最简单的bar,看如下语句你就知道她有多么简单了: import ma

  • Python Matplotlib实现三维数据的散点图绘制

    一.背景 近期项目即将开展,计划第一步就是实现数据的可视化,所以先学习一下数据展示相关Demo.选用Python2.7与Matplotlib来实现,平台采用Pycharm,值得一提的是,Matplotlib的安装前首先要安装Numpy包,但是在完成Numpy的安装之后,楼主不能在PyCharm平台下进行自动安装,或者CMD中使用类似pip install Matplotlib,参考网上解决方案后采用直接去官网下载相应的安装包直接运行安装到相关目录下.在此就不赘述了. 二. 参考 Python语言

  • matplotlib实现数据实时刷新的示例代码

    前言 matplotlib是python下非常好用的一个数据可视化套件,网上相关的教程也非常丰富,使用方便.本人需求一个根据实时数据刷新曲线的上位机软件,找了半天,基本上都是使用matplotlib的交互模式,我折腾半天还是没有实现想要的效果,但却通过另一种方法实现了想要的效果. 源码 注释已经很充分,不多赘述,直接看源码. import matplotlib.pyplot as plt import numpy as np import threading import sys from ra

  • 如何使用matplotlib让你的数据更加生动

    目录 1 引言 2 折线图 3 散点图 4 柱状图 5 饼状图 6 总结 1 引言 Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口.Matplotlib 通常与 NumPy.Pandas 一起使用,是数据分析中不可或缺的重要工具之一. 本文就日常生活中常见的业务场景进行展开讨论,更详尽的说明可以参考文档. 2 折线图 折线图(line chart)是我们日常工作.学习中经常使

  • 通过python的matplotlib包将Tensorflow数据进行可视化的方法

    使用matplotlib中的一些函数将tensorflow中的数据可视化,更加便于分析 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs, in_size, out_size, activation_function=None): Weights = tf.Variable(tf.random_normal([in_size, out_size])) bi

  • 利用matplotlib实现根据实时数据动态更新图形

    我就废话不多说了,直接上代码吧! from time import sleep from threading importThread import numpy as np import matplotlib.pyplot as plt from matplotlib.widgets importButton fig, ax = plt.subplots() #设置图形显示位置 plt.subplots_adjust(bottom=0.2) #实验数据 range_start, range_en

  • Python使用matplotlib给柱状图添加数据标签bar_label()

    目录 0.更新matplotlib库 1.导入库 2.数据准备 3.绘制柱状图 4.绘图结果 5.完整代码 6.bar_label()相关参数的补充说明 0.更新matplotlib库 本文后续的实验过程都是基于matplotlib版本大于等于3.4.1,如果版本较低,是无法实行后续操作的,如何在Pycharm中直接更新matplotlib库的版本,请参照方法:以tensorflow库为例用Pycharm更新第三方库 1.导入库 直接导入matplotlib.pyplot库,代码为: impor

  • Python数据可视化教程之Matplotlib实现各种图表实例

    前言 数据分析就是将数据以各种图表的形式展现给领导,供领导做决策用,因此熟练掌握饼图.柱状图.线图等图表制作是一个数据分析师必备的技能.Python有两个比较出色的图表制作框架,分别是Matplotlib和Pyechart.本文主要讲述使用Matplotlib制作各种数据图表. Matplotlib是最流行的用于绘制2D数据图表的Python库,能够在各种平台上使用,可以绘制散点图.柱状图.饼图等. 1.柱状图 是一种以长方形或长方体的高度为变量的表达图形的统计报告图,由一系列高度不等的纵向条纹

  • 解决Python Matplotlib绘图数据点位置错乱问题

    在绘制正负样本在各个特征维度上的CDF(累积分布)图时出现了以下问题: 问题具体表现为: 1.几个负样本的数据点位置倒错 2.X轴刻度变成了乱七八糟一团鬼东西 最终解决办法 造成上述情况的原因其实是由于输入matplotlib.plot()函数的数据x_data和y_data从CSV文件中直接导入后格式为string,因此才会导致所有数据点的x坐标都被直接刻在了x轴上,且由于坐标数据格式错误,部分点也就表现为"乱点".解决办法就是导入x,y数据后先将其转化为float型数据,然后输入p

  • matplotlib交互式数据光标实现(mplcursors)

    简介 mplcursors包也可以为matplotlib提供交互式的数据光标(弹出式注释框),它的灵感来源于mpldatacursor包,可以认为是基于mpldatacursor包的二次开发. 相对于mpldatacursor包,mplcursors包最大的特点就是提供了一些相对底层的API,这样功能实现更加灵活. 安装 pip install mplcursors 基本应用 mplcursors包的基本应用方法与mpldatacursor包类似,直接应用cursor函数即可. 基本操作方法 鼠

  • matplotlib交互式数据光标mpldatacursor的实现

    简介 mpldatacursor包可以为matplotlib提供交互式的数据光标(弹出式注释框). 它的典型功能是: 鼠标左键单击图表数据元素时会弹出文本框显示最近的数据元素的坐标值. 鼠标右键单击文本框取消显示数据光标. 按d键时切换显示\关闭数据光标. 安装 如果matplotlib版本低于3.3可以直接使用pip安装 pip install mpldatacursor 如果matplotlib版本高于3.3,虽然pip安装成功,但是运行案例时会出现AttributeError: 'Scal

  • Python 数据可视化之Matplotlib详解

    目录 使用的数据库 tips 数据库 Matplotlib 散点图 折线图 条形图 直方图 总结 在深入研究这些库之前,首先,我们需要一个数据库来绘制数据.我们将在本完整教程中使用 tips database.让我们讨论一下这个数据库的简介. 使用的数据库 tips 数据库 tips 数据库是20世纪90年代初期顾客在餐厅的两个半月的小费记录.它包含 6 列,例如 total_bill.tip.sex.smoker.day.time.size. 您可以从这里下载 tips 数据库. 例子: im

  • Python Matplotlib数据可视化模块使用详解

    目录 前言 1 matplotlib 开发环境搭建 2 绘制基础 2.1 绘制直线 2.2 绘制折线 2.3 设置标签文字和线条粗细 2.4 绘制一元二次方程的曲线 y=x^2 2.5 绘制正弦曲线和余弦曲线 3 绘制散点图 4 绘制柱状图 5 绘制饼状图 6 绘制直方图 7 绘制等高线图 8 绘制三维图 总结 本文主要介绍python 数据可视化模块 Matplotlib,并试图对其进行一个详尽的介绍. 通过阅读本文,你可以: 了解什么是 Matplotlib 掌握如何用 Matplotlib

随机推荐