在许多实际问题中,经常要对给出的数据进行可视化,便于观察。

今天专门针对Python中的数据可视化模块--matplotlib这块内容系统的整理,方便查找使用。

本文来自于对《利用python进行数据分析》以及网上一些博客的总结。

1  matplotlib简介

matplotlib是Pythom可视化程序库的泰斗,经过几十年它仍然是Python使用者最常用的画图库。有许多别的程序库都是建立在它的基础上或直接调用它,比如pandas和seaborn就是matplotlib的外包,
它们让你使用更少的代码去使用matplotlib的方法。Gallery页面中有上百幅缩略图,打开之后都有源程序,非常适合学习matplotlib。
 

2  图和子图的建立

2.1  导入matplotlib

import matplotlib.pyplot as plt
import numpy as np

  

2.2  建立图和子图方式一

plt.plot( )会在最近的一个图上进行绘制

from numpy.random import randn
fig = plt.figure(figsize = (8,4)) #设置图的大小
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,1,2)
ax3.plot(randn(50).cumsum(),'k--') # plt.plot(randn(50).cumsum(),'k--')等效
ax1.hist(randn(100),bins = 10, color = 'b', alpha = 0.3) #bins 分成多少间隔 alpha 透明度
ax2.scatter(np.arange(30),np.arange(30) + 3*randn(30))
plt.show()

2.3 建立子图方式二

from numpy.random import randn
fig, axes = plt.subplots(2,2) #以数组方式访问
t = np.arange(0., 5., 0.2)
axes[0,0].plot(t, t, 'r-o', t, t**2, 'bs', t, t**3, 'g^') #同时绘制多条曲线
axes[1,1].plot(randn(40).cumsum(),'b--')
plt.show()

 

2.4 主题设置

使用style.use()函数

df_iris = pd.read_csv('../input/iris.csv')
plt.style.use('ggplot') #'fivethirtyeight','ggplot','dark_background','bmh'
df_iris.hist('sepal length')
plt.show()

 

3  颜色、标记、线型、刻度、标签和图例

from numpy.random import randn
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.plot(randn(30).cumsum(),color = 'b',linestyle = '--',marker = 'o',label = '$cumsum$') # 线型 可以直接'k--o'
ax1.set_xlim(10,25)
ax1.set_title('My first plot')
ax1.set_xlabel('Stages')
plt.legend(loc = 'best') #把图放在不碍事的地方 xticks([])设置刻度
plt.show()

  

等价于下面的代码:

from numpy.random import randn
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.plot(randn(30).cumsum(),color = 'b',linestyle = '--',marker = 'o',label = '$cumsum$') #图标可以使用latex内嵌公式
plt.xlim(10,25) #plt.axis([10,25,0,10])对x,y轴范围同时进行设置
plt.title('My first plot')
plt.xlabel('Stages')
plt.legend(loc = 'best')
plt.show()

  

4  pandas中的绘图函数

在pandas中,我们具有行标签,列标签以及分组信息。这也就是说,要制作一张完整的图表,原本需要一大堆的matplotlib代码,现在只需一两条简洁的语句就可以了。
pandas有很多能够利用DataFrame对象数据组织特点来创建标准图表的高级绘图方法。
 

4.1  线型图

from numpy.random import randn
fig, axes = plt.subplots(1,2)
s = pd.Series(randn(10).cumsum(),index = np.arange(0,100,10))
s.plot(ax = axes[0]) # ax参数选择子图 df = pd.DataFrame(randn(10,3).cumsum(0),columns = ['A','B','C'],index = np.arange(0,100,10))
df.plot(ax = axes[1])
plt.show()

 

4.2 柱状图

from numpy.random import rand
fig, axes = plt.subplots(1,2)
data = pd.Series(rand(16),index = list('abcdefghijklmnop'))
data.plot(kind = 'bar', ax = axes[0], color = 'b', alpha = 0.7) #kind选择图表类型 'bar' 垂直柱状图
data.plot(kind = 'barh', ax = axes[1], color = 'b', alpha = 0.7) # 'barh' 水平柱状图
plt.show()

  

from numpy.random import rand
fig, axes = plt.subplots(1,2)
data = pd.DataFrame(rand(6,4),
index = ['one','two','three','four','five','six'],
columns = pd.Index(['A','B','C','D'], name = 'Genus'))
data.plot(kind = 'bar', ax = axes[0], alpha = 0.5)
data.plot(kind = 'bar', ax = axes[1], stacked = True, alpha = 0.5)
plt.show()

此外,柱状图有一个非常不错的用法,利用value_counts( )图形化显示Series中各值的出现概率,比如s.value_counts( ).plot(kind = 'bar')。

4.3 直方图和密度图

from numpy.random import randn
fig, axes = plt.subplots(1,2)
data = pd.Series(randn(100))
data.hist(ax = axes[0], bins = 50) #直方图
data.plot(kind = 'kde', ax = axes[1]) #密度图
plt.show()

 

其实可以一次性制作多个直方图,layout参数的意思是将两个图分成两行一列,如果没有这个参数,默认会将全部的图放在同一行。

df_iris = pd.read_csv('../input/iris.csv')
columns = ['sepal length','sepal width','petal length','petal width']
df_iris.hist(column=columns, layout=(2,2))
plt.show()

  

4.4 箱型图
箱型图是基于五数概括法(最小值,第一个四分位数,第一个四分位数(中位数),第三个四分位数,最大值)的数据的一个图形汇总,还需要用到四分位数间距IQR = 第三个四分位数 - 第一个四分位数。
df_iris = pd.read_csv('../input/iris.csv')  #['sepal length','sepal width','petal length','petal width','class']
sample_size = df_iris[['petal width','class']]
sample_size.boxplot(by='class')
plt.xticks(rotation=90) #将X轴的坐标文字旋转90度,垂直显示
plt.show()

  

5  参考资料链接

 

Python - matplotlib 数据可视化的更多相关文章

  1. python Matplotlib数据可视化神器安装与基本应用

    Matplotlib Matplotlib 是一个非常强大的 Python 画图工具; 手中有很多数据, Matplotlib能帮你画出美丽的: 线图; 散点图; 等高线图; 条形图; 柱状图; 3D ...

  2. python matplotlib数据可视化

    #基于python3 Matplotlib构建的3D图形: 使用pycharm的小伙伴把sciview给关掉: 因为sciview显示的是png图片.3d图形一般我们都需要拖拖拽拽的. 参见: htt ...

  3. matplotlib 数据可视化

    图的基本结构 通常,使用 numpy 组织数据, 使用 matplotlib API 进行数据图像绘制. 一幅数据图基本上包括如下结构: Data: 数据区,包括数据点.描绘形状 Axis: 坐标轴, ...

  4. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  5. python的数据可视化库 matplotlib 和 pyecharts

    Matplotlib大家都很熟悉    不谈. ---------------------------------------------------------------------------- ...

  6. 【Data Visual】一文搞懂matplotlib数据可视化

    一文搞懂matplotlib数据可视化 作者:白宁超 2017年7月19日09:09:07 摘要:数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.但是,这并不就意味着数据可视化就一定因为 ...

  7. python爬虫28 | 你爬下的数据不分析一波可就亏了啊,使用python进行数据可视化

    通过这段时间 小帅b教你从抓包开始 到数据爬取 到数据解析 再到数据存储 相信你已经能抓取大部分你想爬取的网站数据了 恭喜恭喜 但是 数据抓取下来 要好好分析一波 最好的方式就是把数据进行可视化 这样 ...

  8. Matplotlib数据可视化(1):入门介绍

      1 matplot入门指南¶ matplotlib是Python科学计算中使用最多的一个可视化库,功能丰富,提供了非常多的可视化方案,基本能够满足各种场景下的数据可视化需求.但功能丰富从另一方面来 ...

  9. Python:数据可视化pyecharts的使用

    什么是pyecharts? pyecharts 是一个用于生成 Echarts 图表的类库. echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生 ...

随机推荐

  1. 完全卸载Oracle数据库软件

    软件环境: 1.Windows xp+ORACLE 8.1.7 2.ORACLE安装路径为:C:\ORACLE 实现方法: 1. 开始->设置->控制面板->管理工具->服务 ...

  2. vue开发 - 将方法绑定到window对象,给app端调用

    通过jsBridge方法,H5可以调用客户端(ios,android)的内部方法,同样,客户端也需要能调用H5页面里定义的js方法,但是在vue里,所有的方法都是在组件内部声明的,也只能在组件内部调用 ...

  3. 使用docker搭建公司redmine服务器

    What is Redmine? Redmine is a flexible project management web application. Written using the Ruby on ...

  4. C# 日志系统 log4net 配置及使用

    1.引用Dll 版本是:1.2.10.0,下载Dll 2.Web.config文件配置 <?xml version="1.0" encoding="utf-8&qu ...

  5. VC/MFC程序开启关闭和打开自己或其他软件,更改窗口类

    一. 关闭自身软件 直接在需要关闭的位置输入 HANDLE hself = GetCurrentProcess(); TerminateProcess(hself, 0); 二.关闭其他软件 流程: ...

  6. Asp.Net MVC WebApi2 自动生成帮助文档

    WebAPI Help文档配置 开发环境VS2013+mvc5+WebApi2 一.通过NuGet引用Web API Test Client 安装后会多一个Areas文件夹 二.设置xml文档项目-- ...

  7. 【转】Hudson插件Email-Ext邮件模板时间格式化的解决方法

    原文地址:http://www.cnblogs.com/haycco/archive/2012/03/20/3031397.html 最近因对Hudson版本进行了升级为2.2.0,所以各方面都在搞项 ...

  8. Office2007 每次打开斗需要检查 【配置进度】

    打开C:\Program Files\Common Files\microsoft shared\OFFICE12\Office Setup Controller目录下将SETUP.EXE 重命名为 ...

  9. yii---对数组进行分页

    很多时候,我们会对多个数据进行分页处理,例如我最近开发的一个功能,系统消息,系统消息的来源是多个表,而且多个表之间的数据没有任何关联,这个时候,需要对多个表进行查询,查询返回的数据进行分页,而且采用的 ...

  10. 9.12DjangoORM回顾和路由.

    2018-9-12 13:44:41 周末继续整理一下博客!不知不觉记了好多! 越努力越幸运! 永远不要高估自己! 关于反射的复习 # /usr/bin/env python # -*- coding ...