精华内容
下载资源
问答
  • 使用 matplotlib 进行数据可视化matplotlib 简介figure 画布subplot 分割画布subplots 分割画布绘制图形scatter 散点图bar 柱形图barh 水平柱形图pie 饼状图颜色、标记、线型颜色标记线型示例刻度、标签、图例刻度...

    matplotlib 简介

    matplotlib 是 Python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入 GUI 应用程序中。

    seaborn 是在 matplotlib 的基础上进行了更高级的 API 封装,是一个补充,用于绘制有吸引力和信息的统计图形。

    pyecharts 是一个用于生成 Echarts 图表的类库。

    plotly 是一个交互式的,开放源代码的绘图库,支持40多种独特的图表类型,涵盖各种统计,财务,地理,科学和3维用例。

    mpld3 项目将 Matplotlib 和 D3.js 结合在一起。其结果是一个简单的 API,用于将 matplotlib 图形导出到 HTML 代码中。

    Bokeh (Bokeh.js) 是一个 Python 交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能。Bokeh 的目标是使用 D3.js 样式提供优雅,简洁新颖的图形化风格,同时提供大型数据集的高性能交互功能。Boken 可以快速的创建交互式的绘图,仪表盘和数据应用。

    figure 画布

    可以理解为画布,如果不创建 figure 对象,matplotlib 将自动创建一个 figure 对象。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 创建画布
    fig = plt.figure()
    
    # 快速绘图
    arr = np.random.randn(100)
    plt.plot(arr)
    plt.show()
    

    在这里插入图片描述

    subplot 分割画布

    可以通过 add_subplot 来分割figure,表示可以在figure的不同位置上作图。

    fig.add_subplot(a, b, c)

    a, b 表示将 fig 分割成 a*b 的区域

    c 表示当前选中要操作的区域

    注意:从1开始编号(不是从0开始)

    plot绘图的区域是最后一次指定 subplot 的位置。

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 创建画布
    fig = plt.figure()
    
    # 分割画布
    ax1 = fig.add_subplot(2, 2, 1)
    ax2 = fig.add_subplot(2, 2, 2)
    ax3 = fig.add_subplot(2, 2, 3)
    ax4 = fig.add_subplot(2, 2, 4)
    
    # 绘图
    arr = np.random.randn(100)
    ax2.plot(arr)
    ax3.plot(arr)
    ax4.plot(arr)
    
    plt.show()
    

    在这里插入图片描述

    subplots 分割画布

    同时返回新创建的 figure 和 subplot 对象列表。

    fig, subplot_arr = plt.subplots(a, b)

    a, b 表示将 fig 分割成 a*b 的区域

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 创建画布并分割画布
    fig, subplot_arr = plt.subplots(2, 2)
    
    # 绘图
    subplot_arr[0, 1].hist(np.random.randn(100), bins=20, color='g', alpha=0.5)
    subplot_arr[1, 1].imshow(np.random.rand(5, 5))
    
    plt.show()
    

    在这里插入图片描述

    绘制图形

    scatter 散点图

    参数1: x轴坐标

    参数2: y轴坐标

    x = [1, 2, 3, 4]
    y = [2, 4, 6, 8]
    plt.scatter(x, y)
    plt.show()
    

    在这里插入图片描述

    bar 柱形图

    参数1: x轴坐标

    参数2: 柱形高度

    参数3: 柱形宽度

    x = np.arange(5)
    y1, y2 = np.random.randint(1, 25, size=(2, 5))
    width = 0.33
    ax = plt.subplot(1, 1, 1)
    ax.bar(x, y1, width, color='r')
    ax.bar(x+width, y2, width, color='#0000ff')
    plt.show()
    

    在这里插入图片描述

    barh 水平柱形图

    参数1: y轴坐标

    参数2: 柱形长度

    参数3: 柱形高度

    x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017', '2018']
    y_data1 = [11000, 12300, 14200, 16500, 17900, 19000, 20000, 21200]
    y_data2 = [10500, 11900, 13300, 14900, 16700, 17800, 19400, 22000]
    bar_height = 0.3
    y = np.arange(len(x_data))
    plt.barh(y, y_data1, bar_height, label='C', color='steelblue', alpha=0.8)
    plt.barh(y+bar_height, y_data2, bar_height, label='Python', color='indianred', alpha=0.8)
    
    # 设置图形标题
    plt.title('C vs Python')
    
    # 设置坐标轴名称
    plt.xlabel('users')
    plt.ylabel('year')
    
    # 显示图例
    plt.legend()
    
    # 在柱形图上显示具体数据
    # plt.text() 显示文本
    # 参数1,参数2:设置文本显示的位置
    # 参数3:设置显示的内容
    # 参数ha:控制水平对齐方式
    # 参数va:控制垂直对齐方式
    for y, x in enumerate(y_data1):
        plt.text(x+2000, y-bar_height/2, f"{x}", ha='center', va='bottom')
    for y, x in enumerate(y_data2):
        plt.text(x+2000, y+bar_height/2, f"{x}", ha='center', va='bottom')
        
    plt.show()
    

    在这里插入图片描述

    pie 饼状图

    参数1: 数据

    explode: 将某部分爆炸出来

    labels: 标签(列表)

    sizes = [60, 90, 220, 180]
    labels = ['Spring', 'Summer', 'Autumn', 'Winter']
    colors = ['r', 'g', 'b', 'y']
    explode = [0.15, 0, 0, 0]
    plt.pie(sizes, explode=explode, labels=labels, colors=colors, labeldistance=1.1, autopct='%3.1f%%', shadow=True, startangle=90, pctdistance=0.6)
    
    plt.show()
    

    在这里插入图片描述

    颜色、标记、线型

    颜色

    字符颜色
    'b'蓝色
    'g'绿色
    'r'红色
    'c'青色
    'm'品红色
    'y'黄色
    'k'黑色
    'w'白色

    标记

    字符标记
    '.'
    ','像素 pixel
    'o'圆圈 circle
    'v'倒三角
    '^'正三角
    '<'左三角
    '>'右三角

    线型

    字符线型
    '-' or 'solid'实线
    '--' or 'dashed'短横线
    '-.' or 'dashdot'点划线
    ':' or 'dotted'虚线
    'None'nothing
    ' 'nothing
    ''nothing

    示例

    fig, axes = plt.subplots(2)
    axes[0].plot(np.random.randint(0, 100, 50), color='r', linestyle='--', marker='o', alpha=0.3)
    axes[0].plot(np.random.randint(0, 100, 50), color='#33aa88', linestyle=':', marker='.')
    axes[0].plot(np.random.randint(0, 100, 50), color=(0.5, 0.6, 0.3), linestyle='-', marker='v')
    
    axes[1].plot(np.random.randint(0, 100, 50), 'ro-')
    plt.show()
    

    在这里插入图片描述

    刻度、标签、图例

    刻度

    设置刻度范围

    plt.xlim([xmin, xmax])

    plt.ylim([ymin, ymax])

    ax.set_xlim()

    ax.set_ylim()

    设置显示的刻度

    plt.xticks(list)

    plt.yticks(list)

    ax.set_xticks(list)

    ax.set_yticks(list)

    标签

    设置标题

    ax.set_title()

    设置坐标轴标签

    ax.set_xlabel(list)

    ax.set_ylabel(list)

    设置刻度标签

    ax.set_xticklabels()

    ax.set_yticklabels()

    图例

    ax.plot(label=‘legend’)

    ax.legend()

    plt.legend()

    loc = ‘best’ 自动选择放置图例最佳位置

    示例

    fig, ax = plt.subplots(1)
    ax.plot(np.random.randn(1000).cumsum(), label='line0')
    ax.plot(np.random.randn(1000).cumsum(), label='line1')
    ax.plot(np.random.randn(1000).cumsum(), label='line2')
    
    # 设置标题
    ax.set_title('This is a title')
    # 设置坐标轴标签
    ax.set_xlabel('Number')
    ax.set_ylabel('Month')
    # 设置刻度范围
    ax.set_xlim([0, 800])
    ax.set_ylim([-45, 45])
    # 设置刻度位置
    ax.set_xticks(range(0, 800, 100))
    ax.set_yticks(range(0, 45, 15))
    # 设置刻度标签
    ax.set_yticklabels(['Jan', 'Feb', 'Mar'])
    # 显示图例
    ax.legend(loc='best')
    
    plt.show()
    

    在这里插入图片描述

    彩蛋 - Magic函数

    %matplotlib inline
    

    这是 IPython 中定义的魔法函数(Magic Function),其意义是将那些用于 matplotlib 绘制的图显示在页面里而不是弹出一个窗口,因此就不需要 plt.show() 这一语句来显示图片。

    IPython 提供了功能强大、内建的 Magic函数,定义为: IPython中将任何第一个字母为 % 的行视为 Magic函数 的特殊调用,可以控制 IPython,为其增加许多系统功能。

    后续文章中我们会具体学习 Magic函数,敬请关注~

    展开全文
  • 补充:数据可视化和Python数据可视化工具matplotlib 上次的笔记记录了数据采集与爬虫相关的知识,这次的笔记是对上次的笔记的补充,记录了与数据可视化相关的内容和关于python的数据可视化工具。 首先需要提到一个...

    补充:数据可视化和Python数据可视化工具matplotlib

    上次的笔记记录了数据采集与爬虫相关的知识,这次的笔记是对上次的笔记的补充,记录了与数据可视化相关的内容和关于python的数据可视化工具。
    首先需要提到一个问题,什么是数据可视化?
    举个例子,如果有一篇1000字的文章,翻来覆去都在描述两种事物之间的关系。读者对于这种长篇的文章是非常容易觉得枯燥乏味读不下去,但是如果把这段文章转换成导图的方式描述出来,可能读者对于描述的关系更加一目了然。也就是说导图的方式能让读者更直观的看到事物间关系等,那么数据可视化是一样的道理。

    数据可视化旨在借助于图形化手段,将数据以视觉形式来呈现,清晰有效地传达与沟通信息,帮助人们理解数据中蕴藏的规律和现象。
    数据可视化可以是静态的或交互的。几个世纪以来,人们一直在使用静态数据可视化,如图表和地图。交互式的数据可视化则相对更为先进:人们能够使用电脑和移动设备深入到这些图表和图形的具体细节,然后用交互的方式改变他们看到的数据及数据的处理方式。

    数据可视化的作用与意义:
    数据可视化将大量的高纬度繁琐数据以一种直观的图表的形式展现出来,使得数据在阅读方面变得极为便捷,使数据更加客观、更具说服力。
    数据可视化可以帮助我们分析海量数据中所存在的潜在价值和规律。
    数据可视化是数据挖掘的关键辅助工具,可以使人清晰的理解数据,从而调整我们的分析方法。

    数据可视化的应用场景:
    金融,股票;公司财务;医学;统计分析;自然科学等

    数据可视化的常用工具:
    可视化在线分析平台:Plotly
    基于编程语言实现的工具:Processing,matplotlib,R,pyecharts
    基于JavaScript实现的工具:Chart.js,Echarts,D3.js,flot
    函数公式数据可视化功能:wolframalpha,Tangle,seaborn

    1.Plotly:
    Plotly 是一款用来做数据分析和可视化的在线平台,功能非常强大,可以在线绘制很多图形比如条形图、散点图、饼图、直方图等等。而且还是支持在线编辑,以及多种语言python、javascript、matlab、R等许多API。它在python中使用也很简单,直接用pip install plotly就可以了

    2.matplotlib
    matplotlib是Python提供的数据可视化库之一。
    专门用于开发2D图表(包括3D图表)。
    以渐进、交互式方式实现数据可视化。
    图像结构:
    在这里插入图片描述
    注:图片源自官网。

    基本操作流程:
    导包 import matplotlib.pyplot as np
    创建画布,设置画布属性 plt.figure(figsize,dpi)
    绘图 plt.plot()
    plot为折线图,可以绘制多个图,可以使用不同的图形。
    显示图例 plt.lengend()
    添加刻度 plt.xtickets()
    显示网格 plt.grid()
    保存图片 plt.savefig()
    显示图片 plt.show()

    3.seaborn
    seaborn是一种基于matplotlib的图形可视化工具。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。同时它能高度兼容NumPy与Pandas数据结构。seaborn比matplotlib更加容易使用,而且图例的风格更加现代化,更为美观。但是,相对于matplotlib更为灵活,在制作复杂度较高的图形时更有优势。
    seaborn与matplotlib区别:
    seaborn的底层是基于matplotlib的,他们的差异有点像在点餐时选套餐还是自己点的区别:matplotlib是独立点菜,可能费时费心但最后上桌的菜全是特别适合自己的;seaborn是点套餐,特别简单,一切都是配好的,虽然省时省心,但可能套餐里总有些菜是不那么合自己口味的。
    seaborn是用户把自己常用到的可视化绘图过程进行了函数封装,形成的一个“快捷方式”,seaborn的代码更简洁,可以用一行代码实现一个清晰好看的可视化输出。但是他有一个缺点:定制化能力会比较差,只能实现固化的一些可视化模板类型;matplotlib是可以实现高度定制化绘图的,高度定制化可以让你获得最符合心意的可视化输出结果,但也因此需要设置更多的参数,因而代码更加复杂一些。

    4.Echarts
    Echarts是一个使用 JavaScript 实现的开源可视化库,提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。

    5…pyecharts
    pyecharts是一个Python中用于生成 Echarts 图表的类库,可以使得Echart和Python进行很好的对接。

    数据可视化的流程:
    1.需求分析:
    业务场景分析。
    明确可视化图形的需求。
    确定可视化的任务。
    2.数据分析:
    对数据进行细致解读,分析数据的特点:数据的维度、数据的分布、值的区间和数据之间的联系等。
    根据数据的特点确定设计思路。
    3.匹配图形:
    根据可视化的任务和数据的特点选择能的图形。
    4.确定风格:
    选择与业务场景相匹配的图形风格。
    5.优化图形:
    将数据绘制到图形各个维度上,不断调整至合理。
    修改图形的颜色、图例、坐标等参数,让图形更易看懂。
    6.效果测试:
    是否达到预期效果。
    是否满足业务需求。
    主题风格、颜色是否和场景匹配。
    图形是否清晰易懂。

    展开全文
  • Python3数据可视化模块Matplotlib

    千次阅读 2018-03-16 19:52:09
    目录 一、matplotlib安装(python 3.6) 二、绘制简单的折线图 ...Matplotlib 数据可视化模块。 Matplotlib 能够创建多数类型的图表,如条形图,散点图,饼图,堆叠图,3D 图和地图图表等。 一、matplotlib安装(...

    目录

    一、matplotlib安装(python 3.6)

    二、绘制简单的折线图

    1、绘制简单的折线图

    2、绘制折线图

    三、使用scatter绘制散点图

    四、绘制条形图

    五、常用可视化绘图工具

    六、常见绘图


    Matplotlib 数据可视化模块。 Matplotlib 能够创建多数类型的图表,如条形图,散点图,饼图,堆叠图,3D 图和地图图表等

    一、matplotlib安装(python 3.6)

    • 进入cmd命令行输入pip3 install matplotlib
    • pip3 list (查看安装的包)

    在PyCharm中引用这些包

    二、绘制简单的折线图

    1、绘制简单的折线图

    #绘制简单的折线图
    #导入模块pyplot,并给它指定别名plt
    import matplotlib.pyplot as plt
    input_value=[1,2,3,4,5]      #输入值
    squares=[1,4,9,16,25]        #输出值
    #plt.plot(squares)
    plt.plot(input_value,squares,linewidth=5)         #设置线条的粗细
    plt.title("Square Numbers",fontsize=24)         #给图标指定标题
    plt.xlabel("Value",fontsize=14)                 #为x轴设置标题
    plt.ylabel("Square of value",fontsize=14)            #为y轴设置标题
    plt.tick_params(axis='both',labelsize=14)           #设置刻度标记大小
    plt.show()          #打开matplotlib查看器

     

    2、绘制折线图

    # -*- coding: utf-8 -*-
    import matplotlib.pyplot as plt
    import numpy as np
     
    fig=plt.figure(figsize=(10,8))
    x1 = np.arange(5)
    y1 = [0.42, 0.54,0.58,0.5825,0.59]
    x2 = np.arange(5)
    y2 = [0.43,0.46,0.52,0.613,0.62]
    x3 = np.arange(5)
    y3 = [0.46, 0.475,0.48,0.4825,0.49]
    x4 = np.arange(5)
    y4 = [0.43,0.46,0.52,0.613,0.62]
    x5 = np.arange(5)
    y5 = [0.41, 0.54,0.545,0.58,0.6]
    x6 = np.arange(5)
    y6 = [0.43,0.46,0.52,0.613,0.62]
    x7 = np.arange(5)
    y7 = [0.28,0.29,0.35,0.4,0.45]
    x8 = np.arange(20)
    y8 = [0.21,0.28,0.33,0.5,0.58]
     
    plt.subplot(221)#注意:其中各个参数也可以用逗号,分隔开。第一个参数代表子图的行数;
                    # 第二个参数代表该行图像的列数; 第三个参数代表每行的第几个图像
    group_labels =np.arange(20)+1
    plt.title('The value of Accuracy of different methods ')
    plt.xlabel('Number of iterations')
    plt.ylabel('Accuracy')
    plt.plot(x1, y1, 'b', label='TF-DNN',marker='o')
    plt.plot(x2, y2, 'r', label='TFI-DNN',marker='^')
    plt.xticks(x1, group_labels, rotation=0)
    plt.yticks(np.arange(0.1,1.1,0.1))
    plt.legend(loc = 'best')
     
    plt.subplot(222)
    group_labels =np.arange(20)+1
    plt.title('The value of Recall of different methods ')
    plt.xlabel('Number of iterations')
    plt.ylabel('Recall')
    plt.plot(x3, y3, 'b', label='TF-DNN',marker='o')
    plt.plot(x4, y4, 'r', label='TFI-DNN',marker='^')
    plt.xticks(x1, group_labels, rotation=0)
    plt.yticks(np.arange(0.1,1.1,0.1))
    plt.legend(loc = 'best')
     
    plt.subplot(223)
    group_labels =np.arange(20)+1
    plt.title('The value of Precision of different methods ')
    plt.xlabel('Number of iterations')
    plt.ylabel('Precision')
    plt.plot(x5, y5, 'b', label='TF-DNN',marker='o')
    plt.plot(x6, y6, 'r', label='TFI-DNN',marker='^')
    plt.xticks(x1, group_labels, rotation=0)
    plt.yticks(np.arange(0.1,1.1,0.1))
    plt.legend(loc = 'best')
     
    plt.subplot(2,2,4)
    group_labels =np.arange(20)+1
    plt.title('The value of F1-score of different methods ')
    plt.xlabel('Number of iterations')
    plt.ylabel('F1-score')
    plt.plot(x7, y7, 'b', label='TF-DNN',marker='o')
    plt.plot(x8, y8, 'r', label='TFI-DNN',marker='^')
    plt.xticks(x1, group_labels, rotation=0)
    plt.yticks(np.arange(0.1,1.1,0.1))
    plt.legend(loc = 'best')
     
    plt.legend(loc = 'best')
    fig.tight_layout()# 自动紧凑布局
    #plt.savefig('Figures/Accuracy.jpg')
    plt.show()
    fig.tight_layout()

    三、使用scatter绘制散点图

    #使用scatter()绘制散点图
    #plt.scatter(2,4,s=200)#绘制单个点坐标x=2,y=4;实参s设置点的尺寸
    x_values=[1,2,3,4,5]
    y_values=[1,4,9,16,25]
    plt.scatter(x_values,y_values,s=100)                #绘制一系列点
    plt.title("Square Numbers",fontsize=24)        #给图标指定标题
    plt.xlabel("Value",fontsize=14)          #为x轴设置标题
    plt.ylabel("Square of value",fontsize=14)             #为y轴设置标题
    plt.tick_params(axis='both',which='major',labelsize=14)         #设置刻度标记大小
    plt.show()

    #自动计算数据
    x_value=list(range(1,1001))
    y_value=[x**2 for x in x_value]
    plt.scatter(x_value,y_value,edgecolors='none',s=40)
    plt.axis([0,1100,0,1100000])     #设置每个坐标轴的取值范围

     

    #c='red'设置颜色为红色,edgecolors='none'删除数据点的轮廓
    #c=(0,0,0.8)可以使用RGB颜色模式自定义颜色
    plt.scatter(x_value,y_value,c='red',edgecolors='none',s=40)

     

    #使用颜色映射colormap,从起始颜色渐变到结束颜色
    #参数c=y_value是根据每个点的y值来设置其颜色,参数cmap表示使用哪个颜色映射
    plt.scatter(x_value,y_value,c=y_value,cmap=plt.cm.Blues,edgecolors='none',s=40)

    #自动保存图标用plt.savefig()
    #第一个参数是保存文件名,第二个参数是将图标多余的空白区域剪掉
    plt.savefig('squares_plot.png',bbox_inches='tight')

    四、绘制条形图

    # -*- coding: utf-8 -*-
    import matplotlib.pyplot as plt
    import numpy as np
    import pylab as pl 
    x=[2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016]
    values=[15,29,2348,1476,2634,4605,6969,6357,6844,4734,3881,803,1256,1154,1565,5778,6389]
    # 创建一个点数为 6 x 4 的窗口, 并设置分辨率为 100像素/每英寸
    fig=plt.figure(figsize=(6, 4), dpi=100)
    # 再创建一个规格为 1 x 1 的子图
    plt.subplot(1, 1, 1)
    # 柱子总数
    N = 17
    # 包含每个柱子下标的序列
    index = np.arange(N)
    # 柱子的宽度
    width = 0.35
    # 绘制柱状图, 每根柱子的颜色为紫罗兰色
    p2 = plt.bar(index, values, width, label="vulnerability", color="#87CEFA")
    # 设置横轴标签
    plt.xlabel('years')
    # 设置纵轴标签
    plt.ylabel('The number of vulnerability')
    # 添加标题
    plt.title('Annual vulnerability of NVD(2000-2016)') 
    # 添加纵横轴的刻度
    plt.xticks(index, x)
    plt.yticks(np.arange(0, 7000, 500))
    pl.xticks(rotation=45) #x轴标签旋转 
    plt.legend(loc="vulnerability")# 添加图例
    fig.tight_layout()# 自动紧凑布局
    #plt.savefig('Figures/nvd.jpg') #保存图片
    plt.show()
    fig.tight_layout()

    五、常用可视化绘图工具

    1、可视化工具 Matplotlib,绘制常用的统计图。

    2、基于 Matplotlib 发起而来的一种常用的可视化工具 Seaborn,常用统计图的绘制。

    3、Plotnine 是根据图层概念制图的工具,不同于前面两部分的工具,Plotnine 灵活制作个性化图示。

    4、Plotly 是一款能够“两栖作战”的工具,既能得到静态图片,也能生成动态交互的图示,常用统计图(具有交互功能)的绘制,并可以生成 HTML 文件。

    5、Pyecharts 是非常好的国产工具——中文文档,非常可亲近。Pyecharts 提供的工具和色彩渲染上,都比前述工具有所突破,利用它可以实现地理信息可视化和基于 Web 项目发布可视化图示。

    6、Bokeh 是一款来自岛国日本的可视化工具,除了完成通常的操作之外,在交互功能上,比 Plotly 和 Pyecharts 更有特色,能发布基于网络的图示。

    六、常见绘图

    • 柱形图
    • 堆积柱形图
    • 条形图
    • 气泡图
    • 直方图
    • 箱形图
    • 热力图
    • 散点图
    • 雷达图
    • 环形图
    • 饼图
    • 折线图
    • K 线图
    • 仪表盘
    • 词云
       

     

    展开全文
  • 本篇博客所有示例使用Jupyter NoteBook演示。...一、Matplotlib常用技巧 1.导入Matplotlib 2.设置绘图样式 3.用不用show()?如何显示图形 4.将图形保存为文件 二、两种画图接口 1.MATLAB风格接口 ...

    本篇博客所有示例使用Jupyter NoteBook演示。

    Python数据处理系列笔记基于:Python数据科学手册电子版  下载密码:ovnh

    示例代码  下载密码:02f4

     

    目录

    一、Matplotlib常用技巧

    1.导入Matplotlib

    2.设置绘图样式

    3.用不用show()?如何显示图形

    4.将图形保存为文件

    二、两种画图接口

    1.MATLAB风格接口

    2.面向对象接口

    三、简易折线图

    1.调整图形:线条的颜色与风格

    2.调整图形:坐标轴上下限

    3.设置图形标签

    四、简易散点图

    1.用plt.plot画散点图

    2.用plt.scatter画散点图

    3.plot与scatter:效率对比

    五、可视化异常处理

    1.基本误差线

    2.连续误差

    六、密度图和等高线图

    1.三维函数的可视化

    七、频次直方图、数据区间划分和分布密度

    1.二维频次直方图与数据区间划分

    八、配置图例

    1.选择图例显示的元素

    2.在图例中显示不同尺寸的点

    3.同时显示多个图例

    九、配置颜色条

    1.配置颜色条

    2.案例:手写数字

    十、多子图

    1.plt.axes:手动创建子图

    2.plt.subplot:简易网格子图

    3.plt.subplots:一行代码创建网格

    4.plt.GridSpec:实现更复杂的排列方式

    十一、文字与注释

    1.案例:节假日对美国出生率的影响

    2.坐标变换与文字位置

    3.箭头与注释

    十二、自定义坐标轴刻度

    1.主要刻度与次要刻度

    2.隐藏刻度与标签

    3.增减刻度数量

    4.花哨的刻度格式

    5.格式生成器与定位器小结

    十三、Matplotlib自定义:配置文件与样式表

    1.手动配置图形

    2.修改默认配置:rcParams

    3.样式表

    十四、用Matplotlib画三维图

    1.三维数据点与线

    2.三维等高线图

    3.线框图和曲面图

    4.曲面三角剖分

    十五、用Basemap可视化地理数据

    1.地图投影

    2.画一个地图背景

    3.在地图上画数据

    4.案例:美国加州城市数据

    5.案例:地表温度数据

    十六、用Seaborn做数据可视化

    1.Seaborn与Matplotlib

    2.Seaborn图形介绍

    3.案例:探索马拉松比赛成绩数据


    一、Matplotlib常用技巧

    1.导入Matplotlib

    2.设置绘图样式

    3.用不用show()?如何显示图形

    • 在脚本中画图

    如果在脚本文件或集成环境中使用Matplotlib,显示图形必须使用plt.show():

    注意一个Python会话只能使用一次plt.show(),通常放在脚本最后;多个plt.show()会导致异常。

    • 在Ipython shell中画图

    在Ipython shell中启动Matplotlib模式后,就不需要使用plt.show().

    此后任何plt命令都会自动打开一个图形窗口,增加新命令,图形就会更新。

    有一些变化,如改变已经画好的线条属性不会自动及时更新,可以使用plt.draw()强制更新。

    • 在Ipython Notebook中画图

    将图形直接嵌在IPython Notebook页面中,有两种形式上:

    1)%matplotlib notebook会在Notebook中启动交互式图形

    2)%matplotlib inline会在Notebook中启动静态图形

    统一使用2):

    4.将图形保存为文件

    可以用savefig()把图形保存为不同的数据格式:

    查看系统支持的文件格式:

    保存图像文件不需要使用plt.show()等命令。

    二、两种画图接口

    1.MATLAB风格接口

    这种接口是有状态的:会持续跟踪当前的图形和坐标轴,所有plt命令都可以用:

    这种接口当创建第二个子图时,如果再回到第一个子图增加内容,会很复杂。

    2.面向对象接口

    画简单图形时,二者看个人喜好;画比较复杂的图形时,面向对象方法会更方便。

    三、简易折线图

    在Notebook中画图,需要先导入:

    首先需要创建一个图形fig和一个坐标轴ax:

    然后用ax.plot画图(面向对象接口):

    plt.plot() Matplotlib接口:

    在一幅图中画多条曲线,可以重复调用plot:

    1.调整图形:线条的颜色与风格

    设置曲线颜色,用color参数,有多种表示方法:

    如果不知道颜色,会为多条曲线默认使用一组颜色。

    可以用linestyle参数调整线条风格:

    组合color和linestyle参数:

    2.调整图形:坐标轴上下限

    也可以使用plt.axis()设置范围:

    plt.axis()还可以设置布局:

    3.设置图形标签

    设置图形标题和坐标标题:

    单图显示多条曲线时,设置图例:

    绝大多数Matlab接口和面向对象接口是通用的,如plt.plot()和ax.plot(),plt.legend()和ax.legend()等,也有一些稍有不同,二者转换如下:

    使用面向对象接口时,一般不单独调用这些函数,而是用ax.set()统一设置:

    四、简易散点图

    1.用plt.plot画散点图

    演示一些不同的图形标记:

    图形标记可以与线条和颜色结合使用:

    设置散点和线条的属性:

    2.用plt.scatter画散点图

    与plt.plot()相比,plt.scatter()创建散点图更灵活:

    引入鸢尾花数据集,feature[0]是花萼长度,feature[1]是花萼宽度,图中点的大小代表feature[3]花瓣的宽度,三种颜色对应三种类型的鸢尾花:

    3.plot与scatter:效率对比

    对于小型数据集,二者差异不大;对于大型数据集,plot比scatter快很多。

    原因在于plot中散点基本彼此复制,整个数据集中所有点的颜色、尺寸只需要配置一次;scatter会对每个散点进行单独的大小与颜色的渲染。

    五、可视化异常处理

    1.基本误差线

    改善选项,一般误差线颜色比数据点颜色浅一点比较好:

    可以设置水平误差线、单侧误差线等。可以参考程序文档plt.errorbar.

    2.连续误差

    有时需要显示连续变量的误差:

    通过高斯过程回归方法,演示对带有不确定性的连续测量值进行拟合:

    fill_between首先传入x轴坐标值,然后传入y轴下边界,以及上边界,接下来是一些线条属性设置。,整个区域被误差线填充。

    拟合效果:在接近样本点的区域,模型受很强的约束,拟合误差很小,接近真实值;远离样本点的区域,模型不受约束,误差不断增大。

    六、密度图和等高线图

    1.三维函数的可视化

    等高线图可视化三维数据:

    查看所有配色方案:

    可以用plt.contourf()来填充等高线,语法和plt.contour()一致:

    通过plt.imshow(),将2维数组渲染成渐变图:

    imshow()注意事项:

    1)plt.imshow()不支持x轴和y轴数据设置网格,必须通过extent参数设置图形的坐标范围[xmin,xmax,ymin,ymax

    2)  plt.imshow()原点在左上角,而不是绝大多数等高线图使用的左下角。在显示网格数据图形时必须调整

    3)plt.imshow()会自动调整坐标轴的精度以适应数据显示。可以通过plt.axis(aspect='image')设置x和y轴的单位

    将等高线图与彩色图结合:如将一幅背景为半透明的彩色图(alpha设置透明度),与另一幅坐标相同、带数据标签的等高线图叠放在一起(plt.clabel()):

    七、频次直方图、数据区间划分和分布密度

    一个简易的频次直方图:

    个性化的频次直方图:

    同坐标轴多个频次直方图:

    简单计算每个区间内的样本数,不想画图:

    1.二维频次直方图与数据区间划分

    就像把一维数组分为区间创建一维频次直方图一样,可以将2维数组按照2维区间划分,创建2维频次直方图:

    • plt.hist2d:2维频次直方图

    与hist一样hist2d也有很多其他配置选项。

    如果不想画图,只想查看计算结果:

    • plt.hexbin:六边形区间划分

    2维频次直方图是与坐标轴正交的方块分割而成的,比较常用的是用正六边形分割:

    • 核密度估计

    用于评估多维数据分布密度的常用方法,KDE。

    演示用KDE抹去空间中离散的数据点,拟合出一个平滑的函数:

     

    八、配置图例

    可以使用plt.legend()/ax.legend()来创建最简单的图例,它会自动创建一个包含每个图形元素的图例:

    个性化图例设置:

    1.选择图例显示的元素

    图例会默认显示所有元素的标签,也可以不显示全部:

    也可以为要显示的图例设置标签:

    2.在图例中显示不同尺寸的点

    有时可能需要用不同尺寸的点表示数据特征,希望创建这样的图例来反应这些特征。

    下面有点的尺寸来表示美国加州不同城市的面积,颜色代表不同城市的人口数,通过一个不同尺寸的点来显示不同面积的图例:

     加州城市数据集       下载密码:94pq

    3.同时显示多个图例

    如果要在一张图上显示多个图例不太容易,legend()只能为一张图设置第一个图例,再设置图例第一个会被覆盖。

    可以通过如下方法实现:

    九、配置颜色条

    创建最简单的颜色条:

    1.配置颜色条

    通过cmap参数设置颜色条配色方案:

    查看所有配色方案:

    • 选择配色方案

    一般情况下只需重点关注三种不同的配色方案:

    1)顺序配色方案:由一组连续的颜色构成的配色方案(binary或viridis)

    2)互逆配色方案:由两种互补的颜色构成,表示正反两种含义(RdBu或PuOr)

    3)定性配色方案:随机顺序的一组颜色(rainbow或jet)

    可以通过把配色方案转换成黑白的灰度图看看具体的颜色:

    上图中灰度图中比较亮的条纹。这些亮度变化不均匀的条纹在彩色图中对应一段区间,由于色彩太接近容易凸显出数据集中不重要的部分,jet不是一种好的配色方案,更好的是viridis。

    彩虹效果,可以用cubehelix配色方案可视化连续的数值:

    要用两种颜色表示正反两种含义时,可使用RdBu双色配色方案:

    • 颜色条刻度的限制与扩展功能的设置

    颜色条本身可以看作一个plt.Axes的实例,之前学习的关于坐标轴和刻度纸的格式配置都可以用。

    我们还可以缩短颜色取值的上下限,对于超出上下限的数据,通过extend用三角箭头表示比上限大的数或比下限小的数。

    左图用默认的颜色条刻度限制实现的效果,噪点的范围完全覆盖了我们感兴趣的数据。

    右图设置了颜色条刻度的上下限,并在上下限之外增加了扩展功能,这样数据可视化图形显然更有效果。

    • 离散型颜色条

    颜色条默认是连续的,有时可能需要表示离散数据:

    2.案例:手写数字

    下载手写数字数据集,对一些数字可视化:

    每个数字由64个像素构成,每个数字可以看作一个64维空间中的点,每个维度表示一个像素的亮度。

    可视化高维空间非常困难,一种解决方法是降维,在尽量保留数据内部重要关联性的同时降低数据的维度,如流形学习:

    使用流形学习将数字投影到2维空间并可视化:

    数字3和5投影面积有重叠,说明手写3,5难以区分,自动分类算法容易搞混;

    其他数字如0和1,隔得比较远,说明2者不太可能出现混淆。

    十、多子图

    1.plt.axes:手动创建子图

    plt.axes默认创建一个标准坐标轴,图形坐标系统由四个值组成[底坐标,左坐标,宽度,高度],取值范围为左下角为原点(0),右上角为1.

    创建两个竖直排列的坐标轴:

    上子图起点坐标y为0.5位置,与下子图对应,起点y坐标为0.1位置,高度为0.4

    2.plt.subplot:简易网格子图

    创建彼此对齐的行列子图:

    面向对象接口可实现同样的效果:

    3.plt.subplots:一行代码创建网格

    4.plt.GridSpec:实现更复杂的排列方式

    实现不规则的多行多列子图网格:

    创建多轴频次直方图(后续的Seaborn中会有专门的接口):

    十一、文字与注释

    基本的注释可能只是坐标轴标题与图标题,但注释远远不止这些。

    1.案例:节假日对美国出生率的影响

    美国出生人口数据                下载密码:iwwn

    如果为图形添加一些注释,就更能吸引读者注意了。plt.text()/ax.plot()可以在图中某个坐标点上手动添加注释:

    2.坐标变换与文字位置

    三种坐标变换方式:

    1)ax.transData 以数据为基准的坐标变换,默认值,以x,y轴的标签作为数据坐标

    2)ax.transAxes以坐标轴为基准的坐标变换,以下图中白色矩形左下角为原点,按坐标轴尺寸的比例显示坐标

    3)fig.transFigure以图形为基准的坐标变换,以下图中灰色矩形左下角为原点,按图形尺寸的比例显示坐标

    3.箭头与注释

    arrowprop字典设置箭头风格,更多选项可以查看官方文档。

    用之前的人口数据演示一些箭头注释:

    十二、自定义坐标轴刻度

    Matplotlib目标是用Python对象表现任意图形元素,例如每个figure对象都会包含一个或多个axes对象,每个axes对象又会包含其他表示图形内容的对象。

    对于坐标轴刻度线,每个axes都有xaxis和yaxis属性,每个属性同包含构成坐标轴的线条、刻度和标签的全部属性。

    1.主要刻度与次要刻度

    主要刻度更显著且有标签,次要刻度更小且没有标签。一般情况下Matplotlib不使用次要刻度,可以在对数图中看到:

    可以设置每个坐标轴的formatter和locator对象,自定义刻度线位置和标签。

    查看x轴属性:

    上图的主要刻度和次要刻度的位置都是由LogLocator对象设置。

    上图的主要刻度的标签由LogFormatterMathtext对象设置;主要刻度的标签由NullFormatter对象设置,所以不显示。

    2.隐藏刻度与标签

    上例中隐藏了x轴标签,但刻度/网格线会保留;隐藏了y轴刻度,此时y轴标签也一并隐藏。

    很多时候显示图片时是不需要刻度的,如显示人脸图片:

    3.增减刻度数量

    默认刻度值,显示小图片时会十分拥挤:

    可以设置坐标轴上最大的刻度数量:

    4.花哨的刻度格式

    默认刻度的正/余弦曲线:

    上图默认是整数刻度/网格线,如果是pi的倍数会更好:

     

    将小数形式的刻度标签转换为带pi的形式:

    Matplotlib支持Latex功能,数学表达式用一对$包括。 "$\pi$"代表派。

    5.格式生成器与定位器小结

    • 定位器类

    主要设置坐标轴主要/次要刻度以及位置、数量、分布等。

    • 格式生成器类

    主要设置坐标轴主要/次要刻度标签的形式。

    十三、Matplotlib自定义:配置文件与样式表

    1.手动配置图形

    2.修改默认配置:rcParams

    3.样式表

    十四、用Matplotlib画三维图

    1.三维数据点与线

    2.三维等高线图

    3.线框图和曲面图

    4.曲面三角剖分

    十五、用Basemap可视化地理数据

    1.地图投影

    2.画一个地图背景

    3.在地图上画数据

    4.案例:美国加州城市数据

    5.案例:地表温度数据

    十六、用Seaborn做数据可视化

    1.Seaborn与Matplotlib

    2.Seaborn图形介绍

    3.案例:探索马拉松比赛成绩数据

    展开全文
  • matplotlib是一个绘图数学库,使用它制作简单的图表,折线图,散点图。 pygal包专注于生成适合在数字设备上显示的图表,通过使用pygal可在用户与图表交互时突出元素以调整其大小,还可以调整图表尺寸适合手表或巨型...
  • python地理数据可视化

    2021-05-25 10:59:52
    简单显示一张世界地图 # Basemap类,实例 map=Basemap() # drawcoastlines()方法画出海岸线,海岸线的数据已经默认包含在了库文件中 map.drawcoastlines() map.drawcounties(linewidth=1) # 画国家分界线 plt.show...
  • 该项目致力于以 matplotlib 包为基础,用简单直观的方式操作各类地理要素的成图。Cartopy 官网的画廊页面已经提供了很多绘图的例子,它们和官方文档一起,是学习该工具的主要材料。 绘制 IGS 站点分布图 本图使用...
  • geoplot是一个高级的地理空间数据可视化Python库。它是cartopy和matplotlib的扩展,使得映射变得简单:例如用于地理空间的seaborn。
  • 本篇为《使用Python进行数据分析》中介绍如何使用Matplotlib库进行数据可视化的第二篇,主要内容为如何绘制多子图,在图上添加文字和注释,如何自定义坐标轴刻度,设置自己的绘图风格,画三维图以及介绍Seaborn库的...
  • keplergl是由Uber开源的一款地理数据可视化工具,通过keplergl我们可以在Jupyter notebook中使用,可视化效果如下图所示: 安装 官方文档: https://docs.kepler.gl/docs/keplergl-jupyter 通过pip安装keplergl: ...
  • 将1.3所绘制的重要组成元素的函数放在一起做出一次简单的可视化操作 案例代码: # -*- coding: utf-8 -*- """ Created on Sun Mar 1 08:19:56 2020 @author: 16502 """ #-*-coding: UTF-8 -*- import ...
  • 数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。比如说我们会想要在地图上画出城市,飞机的航线,乃至于军事基地等等。通常来说,一个地理信息系统都会带有这样的功能。今天我们讨论...
  • 本图使用美国西部的 GNSS 测站速度场数据数据来自加州大学圣迭戈分校。在使用ax.quiver()方法绘制站速度矢量时,由于 matplotlib 自动确定的矢量长度比较短,不能够表现足够的细节。因此使用scale_units属性指定...
  • 参考来源:《Python数据科学手册》第4章 URL:https://jakevdp.github.io/PythonDataScienceHandbook/ 描述:笔记 目录: 1、Matplotlib常用技巧  1.1 导入Matplotlib  1.2 设置绘图样式  1.3 用不用show()?...
  • 地理数据可视化基础

    2020-10-27 19:36:54
    地理数据可视化基础 1.获取shp文件的方法 方法一 参考这篇博文: 获取省市县的轮廓shp文件 方法二 参考了以下几篇博文 利用OpenStreetMap获取城市路网数据 OSM路网数据(xml或json格式)如何转为shapefile格式 概括...
  • 在今晚,我将学习新的内容,我会下载JSON格式的人口数据,并使用json 模块来处理它们。 4.2 制作世界人口地图: 4.2.1 下载与提取世界人口数据: 将文件population_data.json复制到本章程序所在的文件夹中,这个文件...
  • Python:matplotlib数据可视化(上) 第十八章 注解股票图表的最后价格 在这个 Matplotlib 教程中,我们将展示如何跟踪股票的最后价格的示例,通过将其注解到轴域的右侧,就像许多图表应用程序会做的那样。 虽然人们...
  • 案例上手 Python 数据可视化

    万次阅读 多人点赞 2019-02-27 23:30:05
    课程亮点 ...数据可视化是数据分析和机器学习的重要环节,比如数据清洗、特征工程、机器学习、数据分析(特别是报告)、评估等环节都会用到“数据可视化”技术。 数据可视化同时还广泛存在于各...
  • 数据可视化小结

    千次阅读 2020-12-18 16:36:38
    数据分布 箱线图(Box Plot) 直方图(Histogram) 密度图(Density Plot) 小提琴图(Violin Plot) 数据组成 饼图(Pie Chart) 环状图 旭日图 树形图(Tree Map) 华夫饼图(Waffle Chart) 柱状图...
  • 说到数据分析,Python 完全能够胜任这方面的工作。Python 究竟如何在数据分析领域做到游刃有余?因为它有“四板斧”,分别是Matplotlib、NumPy、SciPy/Pandas。Matplotlib 是画图工具,NumPy 是矩阵运算库,S...
  • 地理图:地理空间数据可视化 geoplot是一个高级Python地理空间绘图库。 它是对cartopy和matplotlib的扩展,使制图变得容易:就像seaborn一样用于地理空间。 它具有以下功能: 高级绘图API :geoplot是90%用例的...
  • ospybook库来自《Python地理数据处理》书籍,用于地理数据的简单显示 【书】《Python地理数据处理》[美] Chris Garrard 著 2017年7月 【文件夹介绍】本文件夹为该书的...文章目录ospybook介绍——Python可视化地...
  • 数据可视化 (1)可视化 (1)可视化的含义 定义 可视化是一种使复杂信息能够容易和快速被人理解的手段,是一种聚焦在信息重要特征的信息压缩,是可以放大人类感知的图形化表示方法。 可视化为人类大脑与...
  • Matplotlib_12_contours_等高线图_(python_数据可视化教学教程)
  • python中常用的两个画图库是Matplotlib和Seaborn,直接pip安装即可。 常玩吃鸡的小伙伴应该很熟悉雷达图,游戏结束后会出现一张评价雷达图,我们可以用Matplotlib库来制作雷达图 import numpy as np import ...
  • pyecharts来自于echarts,echarts是百度的JavaScript可视化化开源库,集成了包括饼图、柱状图、地理位置图、热力图等多种图表格式。使用起来非常方便。官网地址如下 echarts–...
  • 新型冠状病毒数据可视化分析导言学习目标学习内容效果展示代码与数据分享数据分析常用库 Pandas 简介数据可视化库 Seaborn 简介地理可视化库 Folium 简介1. 建立开发环境 导言 如何成为Python数据分析师? 荀子曰:...
  • 本篇文章将结合具体实操案例,一步步和大家一起运用pandas处理一份看似零碎的数据,并用matplotlib和pyecharts做数据可视化,分析其中缘由。 (一)项目背景 天猫订单综合分析 本数据集共收集了发生在一个月内...
  • 前一篇文章讲述了数据预处理、Jieba分词和文本聚类知识,这篇文章主要介绍Matplotlib和Pandas扩展包绘图的基础用法,同时引入Echarts技术,该技术主要应用于网站可视化展示中。本文内容以实例为主,给读者最直观的...
  • 数据可视化 Pandas Matplotlib 霍罗珀斯地图 霍罗珀斯地图是具有不同划分的区域的映射,该划分具有不同颜色,以指示该划分中特定特征的值。 该划分可以是国家,州,地区或任何其他有据可查的区域。 例如,您可以...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,278
精华内容 911
关键字:

matplotlib地理数据可视化