文章目录

  • 1、简介
  • 2、用 matplotlib 绘制各种可视化图表
    • 2.1 折线图
    • 2.2 柱形图
    • 2.3 饼图
    • 2.4 三维散点图
    • 2.5 散点图
  • 3、其它可视化库
    • 3.1 Seaborn
    • 3.2 ggplot
    • 3.3 Bokeh
    • 3.4 pygal
    • 3.5 Plotly
    • 3.6 geoplotlib
    • 3.7 Gleam
    • 3.8 missingno
    • 3.9 Leather
    • 3.10 pastalog
    • 3.11 GazeParser
  • 4、此项目Github源码分享

1、简介

最近项目中用到不少有关Python图表的知识,主要用的可视化程序库的泰斗 matplotlib 。其实还有很多相关画图表的图形库,大多数可视化图形库是基于 matplotlib 构建的并且确保一些用例更简单。本文主要讲的是 matplotlib ,在文尾将会介绍 11 种其它的数据可视化库。

matplotlib 是Python可视化程序库的泰斗。经过十几年它任然是Python使用者最常用的画图库。它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近。

由于 matplotlib 是第一个 Python 可视化程序库,有许多别的程序库都是建立在它的基础上或者直接调用它。比如pandas和Seaborn就是matplotlib的外包,它们让你能用更少的代码去调用 matplotlib的方法。

虽然用matplotlib可以很方便的得到数据的大致信息,但是如果要更快捷简单地制作可供发表的图表就不那么容易了。就像Chris Moffitt 在“Python可视化工具简介”中提到的一样:“功能非常强大,也非常复杂。”

官网:https://matplotlib.org/
Github/matplotlib:https://github.com/matplotlib/matplotlib

安装:

pip install matplotlib

2、用 matplotlib 绘制各种可视化图表

2.1 折线图

# encoding: utf-8
"""
Author: 沙振宇
CreateTime: 2019-4-29
UpdateTime: 2019-12-12
Info: matplotlib 使用示例 —— 折线图
"""
import matplotlib.pyplot as plt#折线图
x = [5,7,11,17,19,25]#点的横坐标
k1 = [0.82,0.91,0.93,1.26,0.97,0.95]#线1的纵坐标
k2 = [0.89,1.22,1.94,1.57,1.43,0.93]#线2的纵坐标
plt.plot(x,k1,'s-',color = 'r',label="红线的名字")#s-:方形
plt.plot(x,k2,'o-',color = 'g',label="绿线的名字")#o-:圆形
plt.xlabel("横坐标名字")
plt.ylabel("纵坐标名字")
plt.legend(loc = "best")#图例
plt.rcParams['font.sans-serif']=['SimHei'] # 中文
plt.show()

2.2 柱形图

# encoding: utf-8
"""
Author: 沙振宇
CreateTime: 2019-4-29
UpdateTime: 2019-12-12
Info: matplotlib 使用示例 —— 柱形图
"""
import numpy as np
import matplotlib.pyplot as plt
#柱状图
A1 = [0.88,0.81,0.85]
A2 = [0.89,0.86,0.84]
A3 = [0.88,0.83,0.89]
A4 = [0.86,0.86,0.88]
A5 = [0.90,0.83,0.83]
x = np.arange(3) #总共有几组,就设置成几,我们这里有三组,所以设置为3
total_width, n = 0.6, 5    # n有多少个类型
width = total_width / n
x = x - (total_width - width) / 2
plt.bar(x, A1, color = "r",width=width,label='a1 ')
plt.bar(x + width, A2, color = "y",width=width,label='a2')
plt.bar(x + 2 * width, A3 , color = "c",width=width,label='a3')
plt.bar(x + 3 * width, A4 , color = "g",width=width,label='a4')
plt.bar(x + 4 * width, A5 , color = "b",width=width,label='a5')
plt.xlabel("横轴的名字")
plt.ylabel("纵轴的名字")
plt.legend(loc = "best")
plt.xticks([0,1,2],['左边','中间','右边'])
plt.ylim((0.8, 0.95))
my_y_ticks = np.arange(0.8, 0.95, 0.02)
plt.yticks(my_y_ticks)
plt.rcParams['font.sans-serif']=['SimHei']  # 中文
plt.show()

2.3 饼图

# encoding: utf-8
"""
Author: 沙振宇
CreateTime: 2019-4-29
UpdateTime: 2019-12-12
Info: matplotlib 使用示例 —— 饼图
"""
import matplotlib.pyplot as plt# 饼图
data = {'中国': (130, '#7199cf'),'美国': (115, '#4fc4aa'),'日本': (60, '#ffff10'),
}
# 设置绘图对象的大小
fig = plt.figure(figsize=(8, 8))
cities = data.keys()
values = [x[0] for x in data.values()]
colors = [x[1] for x in data.values()]
ax1 = fig.add_subplot(111)
ax1.set_title('饼图')
labels = ['{}:{}'.format(city, value) for city, value in zip(cities, values)]explode = [0.05, 0, 0] # 设置饼图的凸出显示
ax1.pie(values, labels=labels, colors=colors, explode=explode, shadow=True) # 画饼状图, 并且指定标签和对应的颜色  指定阴影效果# plt.savefig('pie.jpg') # 保存成图片
plt.rcParams['font.sans-serif']=['SimHei']  # 中文
plt.show()

2.4 三维散点图

# encoding: utf-8
"""
Author: 沙振宇
CreateTime: 2019-4-29
UpdateTime: 2019-12-12
Info: matplotlib 使用示例 —— 三维散点图
"""
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3Ddata = np.random.randint(0, 255, size=[50, 50, 50])
x, y, z = data[0], data[1], data[2]
ax = plt.subplot(111, projection='3d') # 创建一个三维的绘图工程
# 将数据点分成三部分画,在颜色上有区分度
ax.scatter(x[:10], y[:10], z[:10], c='y') # 绘制数据点
ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
ax.scatter(x[30:40], y[30:40], z[40:50], c='g')
ax.set_zlabel('Z') # 坐标轴
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.rcParams['font.sans-serif']=['SimHei']  # 中文
plt.show()

2.5 散点图

# encoding: utf-8
"""
Author: 沙振宇
CreateTime: 2019-4-29
UpdateTime: 2019-12-12
Info: matplotlib 使用示例 —— 散点图
"""
import numpy as np
import matplotlib.pyplot as pltx = np.arange(0., 5., 0.2)
plt.xlabel('横轴名字')
plt.ylabel('纵轴名字')
plt.rcParams['font.sans-serif']=['SimHei']  # 中文
plt.plot(x, x, 'r--', x, x ** 2, 'bs', x, x ** 3, 'g^')
plt.show()

3、其它可视化库

3.1 Seaborn

Seaborn利用了matplotlib,用简洁的代码来制作好看的图表。Seaborn跟matplotlib最大的区别就是它的默认绘图风格和色彩搭配都具有现代美感。由于Seaborn是构建在matplotlib的基础上的,你需要了解matplotlib从而来调整Seaborn的默认参数。
官网: http://seaborn.pydata.org/index.html

3.2 ggplot

ggplot 基于R的一个作图包 ggplot2, 同时利用了源于 《图像语法》(The Grammar of Graphics)中的概念。ggplot 跟 matplotlib 的不同之处是它允许你叠加不同的图层来完成一幅图。比如你可以从轴开始,然后加上点,加上线,趋势线等等。虽然《图像语法》得到了“接近思维过程”的作图方法的好评,但是习惯了matplotlib的用户可能需要一些时间来适应这个新思维方式。ggplot的作者提到 ggplot 并不适用于制作非常个性化的图像。它为了操作的简洁而牺牲了图像复杂度。ggplot跟pandas的整合度非常高,所以当你使用它的时候,最好将你的数据读成 DataFrame。
官网: http://ggplot.yhathq.com/

3.3 Bokeh

跟ggplot一样, Bokeh 也是基于《图形语法》的概念。但是跟ggplot不一样的是,它完全基于Python而不是从R引用过来的。它的长处在于它能用于制作可交互,可直接用于网络的图表。图表可以输出为JSON对象,HTML文档或者可交互的网络应用。Boken也支持数据流和实时数据。
Bokeh为不同的用户提供了三种控制水平。最高的控制水平用于快速制图,主要用于制作常用图像, 例如柱状图,盒状图,直方图。中等控制水平跟matplotlib一样允许你控制图像的基本元素(例如分布图中的点)。最低的控制水平主要面向开发人员和软件工程师。它没有默认值,你得定义图表的每一个元素。
官网: https://bokeh.pydata.org/en/latest/

3.4 pygal

pygal 跟 Bokeh 和 Plotly 一样,提供可直接嵌入网络浏览器的可交互图像。跟其他两者的主要区别在于它可以将图表输出为SVG格式。如果你的数据量相对小,SVG就够用了。但是如果你有成百上千的数据点,SVG的渲染过程会变得很慢。由于所有的图表都被封装成了方法,而且默认的风格也很漂亮,用几行代码就可以很容易地制作出漂亮的图表。
官网: http://www.pygal.org/en/latest/index.html

3.5 Plotly

在线制图工具Plotly,但是你知道你可以通过Python notebook使用它么?Plotly 跟 Bokeh 一样致力于交互图表的制作,但是它提供在别的库中很难找到的几种图表类型,比如等值线图,树形图和三维图表。
官网: https://plot.ly/python/

3.6 geoplotlib

geoplotlib 是一个用于制作地图和地理相关数据的工具箱。你可以用它来制作多种地图,比如等值区域图, 热度图,点密度图。你必须安装 Pyglet (一个面向对象编程接口)来使用geoplotlib。 不过因为大部分Python的可视化工具不提供地图,有一个专职画地图的工具也是挺方便的。
Github:https://github.com/andrea-cuttone/geoplotlib

3.7 Gleam

Gleam 借用了R中 Shiny 的灵感。 它允许你只利用 Python 程序将你的分析变成可交互的网络应用,你不需要会用HTML CSS 或者 JaveScript。Gleam 可以使用任何一种 Python 的可视化库。当你创建一个图表的时候,你可以在上面加上一个域,这样用户可以用它来对数据排序和过滤了。
Github:https://github.com/dgrtwo/gleam

3.8 missingno

缺失数据是永远的痛。missingno 用图像的方式让你能够快速评估数据缺失的情况,而不是在数据表里面步履维艰。你可以根据数据的完整度对数据进行排序或过滤,或者根据热度图或树状图来考虑对数据进行修正。
Github: https://github.com/ResidentMario/missingno

3.9 Leather

Leather的最佳定义来自它的作者 Christopher Groskopf:“Leather 适用于现在就需要一个图表并且对图表是不是完美并不在乎的人。”它可以用于所以的数据类型然后生成SVG图像,这样在你调整图像大小的时候就不会损失图像质量。这个库很新,一些文档还没有最后完成。图像成品非常基础——但是这就是设计目标。
官网:https://leather.readthedocs.io/en/latest/index.html

3.10 pastalog

面向训练神经网络的简单实时可视化服务器。 Lasagne。Keras。Tensorflow。Torch。Theano和基本所有其他内容一起使用。
Github: https://github.com/rewonc/pastalog

3.11 GazeParser

GazeParser是眼动研究的一个包。 对于录制,该软件包提供了一个模块来控制来自VisionEgg和PsychoPy的基于视频的开源眼动追踪应用程序SimpleGazeTracker。 对于数据分析,该软件包提供各种功能,例如检测扫视和固定,绘制和比较扫描路径,计算扫视轨迹曲率等。
pypi:https://pypi.org/project/GazeParser/0.11.1/

4、此项目Github源码分享

https://github.com/ShaShiDiZhuanLan/Demo_Matplotlib_Python

Python开发 之 各种可视化图表的绘制相关推荐

  1. 服务器可视化_疫情来袭,30分钟学会用python开发部署疫情可视化网站

    2019-nCov疫情实时数据可视化--30分钟python快速版 疫情来袭,宅在家不如学习用python如何开发并部署一个疫情实时追踪可视化页面.页面预览 本文将介绍如何使用python开发网站,「 ...

  2. Python,地理地图可视化:plotly绘制mapbox地图城市中心点经纬度marker标记

    Python地理地图可视化:plotly标记mapbox地图城市中心点经纬度marker import plotly.graph_objects as goKEYS = ['中心点经纬度', '维度' ...

  3. 你知道怎么用Pandas绘制带交互的可视化图表吗?

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐 来源:可以叫我才哥作者:道才 之前咱们介绍过Pandas可视化图表的绘制 ...

  4. echarts 折线上写数值_前端ECharts数据可视化图表案例与介绍

    什么是ECharts? ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  5. 厉害了,用Python绘制动态可视化图表,并保存成gif格式

    作者 | 俊欣 来源 | 关于数据分析与可视化 最近有粉丝问道说"是不是可以将这些动态的可视化图表保存成gif图",小编立马就回复了说后面会写一篇相关的文章来介绍如何进行保存gif ...

  6. python 3d大数据可视化_Python大数据可视化编程实践-绘制图表

    Python 数据可视化编程实践 - 绘制图表 准备工作 打开 Jupyter Notebook ,导入需要的包, 并配置好图片交互和中文显示环 境: import pandas as pd impo ...

  7. python画50个图-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?

    Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢? 可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上 ...

  8. Python绘制六种可视化图表详解

    可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上众多的图表类型给吓着了,由于种类太多,几种图表的绘制方法很有可 ...

  9. 用python 画炫酷的图并讲解-Python绘制六种可视化图表详解,三维图最炫酷!你觉得呢?...

    可视化图表,有相当多种,但常见的也就下面几种,其他比较复杂一点,大都也是基于如下几种进行组合,变换出来的.对于初学者来说,很容易被这官网上众多的图表类型给吓着了,由于种类太多,几种图表的绘制方法很有可 ...

最新文章

  1. 测试用例设计白皮书--正交实验设计方法
  2. 算法对建筑业的影响,不仅仅是画图
  3. python错误和异常处理怎处理你知道么
  4. azure container 的命名规则
  5. Lesson 2.张量的索引、分片、合并以及维度调整
  6. javaweb学习总结(二十六)——jsp简单标签标签库开发(二)
  7. ios html5 不支持 flv_iExplorer v4.2.6 一款优秀强大的 iOS 资源管理工具
  8. bzoj1095 [ZJOI2007]Hide 捉迷藏
  9. matlab历史指示穿作用,重新学习MATLAB——相见恨晚的重要应用技巧
  10. Ubuntu 12/14 个性化配置
  11. 关于J2EE项目中三层架构如何在开发中得到正确的实施
  12. java在文本域内添加按钮_JAVA中在窗体中添加了一个文本框,然后再文本框中输入字符,如何...
  13. php 判断来访国内外IP
  14. [深度学习项目] - 时间序列预测 (2)
  15. Php实现Facebook app端web网页登陆功能
  16. 有一张足够大的纸,它的厚度是0.1毫米。请问,折叠多少次,可以折成珠穆朗玛峰的高度。(java实现)
  17. POJ2367 家谱树
  18. 05- 防火墙用户管理
  19. LeetCode_575_分糖果
  20. 从爆红到凉凉,「蚂蚁呀嘿」只用了 7 天

热门文章

  1. sqlServer数据库,将一个月内的数据按周统计
  2. pytorch中谜一样的索引赋值法
  3. java中根据自己的需要画一张jgp的图片
  4. 误差函数拟合优缺点_GELU的两个初等函数近似是怎么来的?
  5. 「云市场2019」IaaSPaaS 三强:AWS,Azure,GCP
  6. “头腾大战”烽烟再起,飞书触犯了微信的隐私数据安全红线?
  7. maven 更改tomcat端口
  8. Auto.js实例循环
  9. 20+汇总|计算机视觉深度学习训练推理框架
  10. 将C语言宏定义转换成字符串!