python matplotlib 地图_学习Python数据可视化,看这篇就够了-程序员宅基地

技术标签: python matplotlib 地图  python做大屏数据可视化  输入等值线参数绘制等值线图python  

1.无处不在的数据可视化

提到数据可视化,大家可能脑海里就会出现里各种图表、绚丽大屏、或者科幻电影里酷炫仪表。其实,日常生活里面,到处都有数据可视化的影子。

5a3fc7f172b0b423e859fedd556c8ff1.png

手表就是数据可视化的例子,最少只需要3个视觉元素(时针、分针和秒针),就可以表达43200个状态。另外,水银温度计和地铁线路图,也是生活中数据可视化的运用!

2.为什么需要数据可视化?

视觉是人类获取外界信息最高速,最主要也是最重要渠道。 超过50%的人脑功能用于视觉感知,而大脑接收到的信息 90% 来自视觉,人类利用视觉获取和处理的信息量,远远超出其他途径。

23bdbd51508ee10bafcdf32d7b6b37f6.png

视觉的信息带宽是最大的,其次是触觉和听觉。

人类大脑处理图像的速度比文本快 6 万倍。所谓的“可视化”,就是利用人类视觉化的思考能力,对数据进行可视表达以增强认知的技术。

3.Python数据可视化学习

说到python的常见应用,很多人会想到python的数据分析,作为数据分析中的表现层面,数据可视化都是其中必不可少的部分。但本文并非只推荐无任何数据分析需求仅需要做漂亮可视化图表的人学习python数据可视化。本文介绍的只是一些常见的python第三方库,毕竟作为一个工具来说,这些第三方库使用起来并不是非常方便,也有一定的学习成本,普通的可视化推荐使用excel、wps,有条件的可以使用各种BI工具如:tableau,powerBI等。

那什么情况下需要用到python数据可视化库呢?

如果是在某些特定场景中,需要用到python做数据分析,输出各种图表用于辅助分析或者数据报告展示,那这些库则显得必不可少,接下来将介绍一些如何学习的方法和第三方库的介绍:

比如选择一款合适的库,先了解各种库的特点,选择合适的库,然后学习绘图原理,掌握的知识点

选择官网是最省钱和系统的学习的最佳路径,至于效率方面见仁见智。选择书籍或视频的方式也未尝不可。

  • 了解几大常用的可视化库,比如特性、使用场景、效果图等;
  • 选择一款适合自己的第三方库,比如要做国内地图类的项目,选择pyecharts;
  • 学习该库的绘图原理,各种函数调用和参数修改,就是所谓的"调参";
  • 不断练习、练习、练习;

推荐学习使用的开发工具:JupyterNotebook。在数据分析和可视化的应用中,jupyter无疑是首选,相比其他如pycharm等工具,可以将每一步的可视化图表输出在同一页面中,方便比较分析。

111715746b48053786ea277e053fd602.png

4.可视化库介绍

- 1 -

Matplotlib

官方文档地址

https://matplotlib.org/2.0.2/index.html

Gallery画廊地址

https://matplotlib.org/2.0.2/gallery.html

e27a99d4aca1ba472175b11ef376bfe8.png

matplotlib是Python数据可视化库的OG。尽管它已有十多年的历史,但仍然是Python社区中使用最广泛的绘图库。它的设计与MATLAB非常相似,MATLAB是20世纪80年代开发的专有编程语言。通常在python数据分析的教程中经常会包含该库的学习。

基础讲解:使用matplotlib绘图的原理,主要就是理解figure(画布)、axes(坐标系)、axis(坐标轴)三者之间的关系。

步骤:创建figure图形对象-> 获取对应位置的axes坐标系对象->调用axes对象,进行对应位置的图形绘制->显示图形。下图是帮助我们理解figure和axes的关系。

79fa2c71dc5f2b31ea0ff810dae07da9.png

- 2 -

Seaborn

官方文档地址

https://seaborn.pydata.org/tutorial.html

Gallery画廊地址

https://seaborn.pydata.org/examples/index.html

1524ceb5e2311d3ab7c656bd05bf316f.png

Seaborn利用matplotlib的强大功能,可以只用几行代码就创建漂亮的图表。关键区别在于Seaborn的默认款式和调色板设计更加美观和现代。由于Seaborn是在matplotlib之上构建的一个更高级的库,因此还需要了解matplotlib以便调整Seaborn的默认值,所以在matplotlib上的调参也可以在Seaborn上面使用。Seaborn针对的点主要是数据挖掘和机器学习中的变量特征选取,seaborn可以用短小的代码去绘制描述更多维度数据的可视化效果图。

基础讲解:原理比较简单,主要是通过sns对象调用各种类型表格的函数,这里举一个例子:

import numpy as npimport seaborn as snsfrom scipy import stats, integrate%matplotlib inline   #导入库sns.set(color_codes=True)np.random.seed(sum(map(ord, "distributions")))#构造数据,每次产生的随机数相同x = np.random.gamma(6, size=200) #输出图像的主要函数,distplot是直方图,根据需求选择不同的图表函数即可sns.distplot(x, kde=False, fit=stats.gamma)
337eb857f3e4cc7e6e490ccdcd548671.png

- 3 -

Pyecharts

官方文档地址

https://pyecharts.org/

Gallery画廊地址

http://gallery.pyecharts.org/#/README

b48f905d721d1a196d53884b0a48a758.png

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

这是国人开发的一个Echarts与Python结合的轮子,可以结合JavaScript等前端技术定制我们要的主题风格,功能非常强大,也是数据可视化非常常用的一个工具,也是比较推荐新手学习的。

基础讲解: 选择图表类型-> 声明图形类并添加数据,比如添加x轴和y轴的数据->选择全局变量set_global_opts,设置参数->显示及保存图表;

from pyecharts.charts import Barfrom pyecharts import options as opts# V1 版本开始支持链式调用bar = (    Bar()    .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])    .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])    .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])    .set_global_opts(title_opts=opts.TitleOpts()))bar.render()# 不习惯链式调用的开发者依旧可以单独调用方法bar = Bar()bar.add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])bar.add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])bar.add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])bar.set_global_opts(title_opts=opts.TitleOpts())bar.render()
25bf4730a49fd2e4b255cdc9e1da07ad.gif

注:各种不同的图表输入的数据格式会有所不同,导致部分复杂图表的设置难度较大。

- 4 -

ggplot

官方文档地址

http://ggplot.yhathq.com/

16885b3b916e62bd65c4bb73ebd03549.png

ggplot基于ggplot2,一个 R 语言绘图系统,以及The Grammar of Graphics的概念。ggplot的运行方式与matplotlib不同:它允许你对组件进行分层以创建完整的绘图。例如,你可以从轴开始画,然后添加点,然后是线、趋势线等。虽然图形语法被称为绘图的“直观”方法,但经验丰富的matplotlib用户可能需要时间来适应这个新的方式。

- 5 -

Bokeh

官方文档地址

https://docs.bokeh.org/en/latest/

Gallery画廊地址

https://docs.bokeh.org/en/latest/docs/gallery.html

e6855072da5f85061d5e9461aa759c2f.png

与ggplot一样,Bokeh同样基于The Grammar of Graphics,但与ggplot不同的是,它是原生Python的,而不是从R语言移植过来的。它的优势在于能够创建交互式的网站图,它可以很容易地输出为JSON对象、HTML或交互式Web应用程序。Bokeh还支持流媒体和实时数据。

- 6 -

Pygal

官方文档地址

http://www.pygal.org/en/stable/

fd60330fa5feb4cdeb1b2ed9db531c80.png

与Bokeh和Plotly一样,pygal提供可以嵌入Web浏览器的交互式图。它的主要区别在于能够将图表输出为SVG格式。如果你使用较小的数据集,SVG格式的图像就可以了。但是如果制作的图表包含数十万个数据点,它们就会很难渲染并变得反应迟钝。

- 7 -

Plotly

官方文档地址

https://plotly.com/

9327acc70807474512584d90019e05b3.png

你可能知道Plotly是一个数据可视化的在线平台,但你是否也知道可以从Python笔记本使用它的功能?与Bokeh一样,Plotly的强项正在制作交互式图,但它提供了一些在大多数库中没有的图表,如等高线图,树状图和3D图表。

- 8 -

Geoplotlib

Github地址

https://github.com/andrea-cuttone/geoplotlib

d0c140ef0103b058b1cd1114b10a6bb3.png

geoplotlib是一个用于创建地图和绘制地理数据的工具库。可以使用它来创建各种地图类型,例如等值线,热图和点密度贴图。你必须安装Pyglet(面向对象的编程接口)才能使用geoplotlib。尽管如此,由于大多数的Python数据可视化库都没有提供地图类型,因此有一个专门的库还是可以的。

参考文章:《数据可视化入门教程》https://www.yuque.com/mo-college/beginner-tutorial/uvaiu2

深度讲解Python四大常用绘图库的“绘图原理” https://my.oschina.net/u/4579597/blog/4444177

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39710966/article/details/110416693

智能推荐

JavaScript学习笔记_curry函数未定义-程序员宅基地

文章浏览阅读343次。五种原始的变量类型1.Undefined--未定义类型 例:var v;2.String -- ' '或" "3.Boolean4.Number5.Null--空类型 例: var v=null;Number中:NaN -- not a number非数本身是一个数字,但是它和任何数字都不相等,代表非数,它和自己都不相等判断是不是NaN不能用=_curry函数未定义

兑换码编码方案实践_优惠券编码规则-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏17次。兑换码编码设计当前各个业务系统,只要涉及到产品销售,就离不开大大小小的运营活动需求,其中最普遍的就是兑换码需求,无论是线下活动或者是线上活动,都能起到良好的宣传效果。兑换码:由一系列字符组成,每一个兑换码对应系统中的一组信息,可以是优惠信息(优惠券),也可以是相关奖品信息。在实际的运营活动中,要求兑换码是唯一的,每一个兑换码对应一个优惠信息,而且需求量往往比较大(实际上的需求只有预期_优惠券编码规则

c语言周林答案,C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt...-程序员宅基地

文章浏览阅读45次。C语言程序设计实训教程教学课件作者周林ch04结构化程序设计课件.ppt* * 4.1 选择结构程序设计 4.2 循环结构程序设计 4.3 辅助控制语句 第四章 结构化程序设计 4.1 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的: 如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 第四章 结构化程序设计 在现实生活中,需要进行判断和选择的情况..._在现实生活中遇到过条件判断的问

幻数使用说明_ioctl-number.txt幻数说明-程序员宅基地

文章浏览阅读999次。幻数使用说明 在驱动程序中实现的ioctl函数体内,实际上是有一个switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。怎么实现这些操作,这是每一个程序员自己的事情。 因为设备都是特定的,这里也没法说。关键在于怎样组织命令码,因为在ioctl中命令码是唯一联系用户程序命令和驱动程序支持的途径 。 命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,利_ioctl-number.txt幻数说明

ORB-SLAM3 + VScode:检测到 #include 错误。请更新 includePath。已为此翻译单元禁用波浪曲线_orb-slam3 include <system.h> 报错-程序员宅基地

文章浏览阅读399次。键盘按下“Shift+Ctrl+p” 输入: C++Configurations,选择JSON界面做如下改动:1.首先把 “/usr/include”,放在最前2.查看C++路径,终端输入gcc -v -E -x c++ - /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/_orb-slam3 include 报错

「Sqlserver」数据分析师有理由爱Sqlserver之十-Sqlserver自动化篇-程序员宅基地

文章浏览阅读129次。本系列的最后一篇,因未有精力写更多的入门教程,上篇已经抛出书单,有兴趣的朋友可阅读好书来成长,此系列主讲有理由爱Sqlserver的论证性文章,希望读者们看完后,可自行做出判断,Sqlserver是否真的合适自己,目的已达成。渴望自动化及使用场景笔者所最能接触到的群体为Excel、PowerBI用户群体,在Excel中,我们知道可以使用VBA、VSTO来给Excel带来自动化操作..._sqlsever 数据分析

随便推点

智慧校园智慧教育大数据平台(教育大脑)项目建设方案PPT_高校智慧大脑-程序员宅基地

文章浏览阅读294次,点赞6次,收藏4次。教育智脑)建立学校的全连接中台,对学校运营过程中的数据进行处理和标准化管理,挖掘数据的价值。能:一、原先孤立的系统聚合到一个统一的平台,实现单点登录,统一身份认证,方便管理;三、数据共享,盘活了教育大数据资源,通过对外提供数。的方式构建教育的通用服务能力平台,支撑教育核心服务能力的沉淀和共享。物联网将学校的各要素(人、机、料、法、环、测)全面互联,数据实时。智慧校园解决方案,赋能教学、管理和服务升级,智慧教育体系,该数据平台具有以下几大功。教育大数据平台底座:教育智脑。教育大数据平台,以中国联通。_高校智慧大脑

编程5大算法总结--概念加实例_算法概念实例-程序员宅基地

文章浏览阅读9.5k次,点赞2次,收藏27次。分治法,动态规划法,贪心算法这三者之间有类似之处,比如都需要将问题划分为一个个子问题,然后通过解决这些子问题来解决最终问题。但其实这三者之间的区别还是蛮大的。贪心是则可看成是链式结构回溯和分支界限为穷举式的搜索,其思想的差异是深度优先和广度优先一:分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两_算法概念实例

随笔—醒悟篇之考研调剂_考研调剂抑郁-程序员宅基地

文章浏览阅读5.6k次。考研篇emmmmm,这是我随笔篇章的第二更,原本计划是在中秋放假期间写好的,但是放假的时候被安排写一下单例模式,做了俩机试题目,还刷了下PAT的东西,emmmmm,最主要的还是因为我浪的很开心,没空出时间来写写东西。  距离我考研结束已经快两年了,距离今年的考研还有90天左右。  趁着这个机会回忆一下青春,这一篇会写的比较有趣,好玩,纯粹是为了记录一下当年考研中发生的有趣的事。  首先介绍..._考研调剂抑郁

SpringMVC_class org.springframework.web.filter.characterenco-程序员宅基地

文章浏览阅读438次。SpringMVC文章目录SpringMVC1、SpringMVC简介1.1 什么是MVC1.2 什么是SpringMVC1.3 SpringMVC的特点2、HelloWorld2.1 开发环境2.2 创建maven工程a>添加web模块b>打包方式:warc>引入依赖2.3 配置web.xml2.4 创建请求控制器2.5 创建SpringMVC的配置文件2.6 测试Helloworld2.7 总结3、@RequestMapping注解3.1 @RequestMapping注解的功能3._class org.springframework.web.filter.characterencodingfilter is not a jakart

gdb: Don‘t know how to run. Try “help target“._don't know how to run. try "help target".-程序员宅基地

文章浏览阅读4.9k次。gdb 远程调试的一个问题:Don't know how to run. Try "help target".它在抱怨不知道怎么跑,目标是什么. 你需要为它指定target remote 或target extended-remote例如:target extended-remote 192.168.1.136:1234指明target 是某IP的某端口完整示例如下:targ..._don't know how to run. try "help target".

c语言程序设计教程 郭浩志,C语言程序设计教程答案杨路明郭浩志-程序员宅基地

文章浏览阅读85次。习题 11、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法描述2、c 语言程序的结构如下:1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。2、“/*“与“*/“之间的内容构成 c 语言程序的注释部分。3、用预处理命令#include 可以包含有关文件的信息。4、大小写字母在 c 语言中是有区别的。5、除 main 函数和标准库函数以..._c语言语法0x1e