20. Matplotlib 数据可视(上)

简介: 20. Matplotlib 数据可视化

3170123f598741efb075f1b4e6e7f87e.png 1. 简介

Matplotlib网址:https://matplotlib.org/

数据可视化是数据分析中最重要的工作之一。Matploblib是建立在Numpy数组基础上的多平台数据可视化程序库,专门用于开发2D图表(包括3D图表)。matploblib继承了Matlab的交互性,用户可以逐条输入命令,为数据生成渐趋完整的图形表示。

Matplotlib注意有如下优点:

  • 使用简单。
  • 以渐进、交互式方式实现数据可视化。
  • 表达式和文本使用LaTeX排版。
  • 对图像元素控制力强。
  • 可输出PNG、PDF、SVG和EPS。

安装和导入Matplotab

# 安装Pandas
'''Windows 按住win+R 输入 cmd,Mac 打开Terminal
conda install matplotlib
pip install matplotlib
'''
import matplotlib as mpl # 导入模块
import matplotlib.pyplot as plt # 导入模块方法

2. Matplotlib 开发环境

Matplotlib 有3种开发环境,分别是脚本、IPython shell 和 IPython Notebook。

2.1 画图

在脚本中画图

如果在一个脚本文件中使用Matplotlib,那么现实图形的时候必须使用plt.show()启动一个事件循环(event loop),并找到所有当前可用的图形对象,然后打开一个或多个交互式窗口显示图形。

# 方法一
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100) # 生成1~10中100个等差数
plt.plot(x,np.sin(x)) # 正弦曲线
plt.plot(x,np.cos(x)) # 余弦曲线
plt.show() # 画图

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
fig = plt.figure()
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))


在IPython shell中画图

在IPython中使用%matplotlib魔法命令,启动Matplotlib模式,就不需要使用plt.show()。

%matplotlib
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))

在IPython Notebook中画图

IPython Notebook 是一款基于浏览器的交互式数据分析工具,可以将描述文字、代码、图形、HTML元素以及更多的媒体形式组合起来,集成到单个可执行的Notebook文档中。

  • %matplotlib notebook:在Notebook中启动交互式图形。
  • %matplotlib inline:在Notebook中启动静态图形。
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
fig = plt.figure()
plt.plot(x,np.sin(x))
plt.plot(x,np.cos(x))

2.2 画图接口

Matplotlib 提供了两种画图接口:一种是便捷的Matlab风格接口,另一个是功能更强大的面向对象接口。

Matlab 风格接口:最重要的特性是有状态的(stateful),它持续跟踪当前的图形和坐标轴,所有plt命令都可以应用。可以使用plt.gcf()获取当前图形的具体信息,使用plt.gca()获取当前坐标轴的具体信息。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
plt.figure() # 创建图形
plt.subplot(2,1,1) # 创建两个子图中的第一个,设置坐标轴,行、列、子图编号
plt.plot(x,np.sin(x))
plt.subplot(2,1,2) # 创建两个子图中的第二个,设置坐标轴
plt.plot(x,np.cos(x))

面向对象接口:可适应更复杂的场景,可以更好地控制图形。画图函数不再受到当前活动的图形或坐标轴的限制,而变成了显式的Figure和Axes的方法。复杂图形时,面向对象接口方法更方便。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
fig,ax = plt.subplots(2) # 创建图形网格,ax是一个包含两个Axes对象的数组
ax[0].plot(x,np.sin(x))
ax[1].plot(x,np.cos(x))

2.4 线形图

线性图形就是方程y=f(x)使用plt.style可以选择图形的绘图风格。figure 可以被看成是一个能够容纳各种坐标轴、图形、文字和标签的容器。axes 是一个带有刻度和标签的矩形,最终包含所有可视化的图形元素。

plt.style.use('seaborn-whitegrid') # 
fig = plt.figure() # 创建一个图形 fig
ax = plt.axes() # 创建一个坐标 ax
x = np.linspace(0,10,1000)
ax.plot(x,np.sin(x)) # 使用 ax.plot画图
plt.plot(x,np.cos(x)) # 使用 pylab 接口画图

调整线条的颜色与风格

put.plot()函数可以通过相应的参数设置颜色与风格。要修改颜色,可以使用color参数,它支持各种颜色值的字符串。

plt.plot(x,np.sin(x-0),color='blue') # 标准颜色名称
plt.plot(x,np.sin(x-1),color='g') # 缩写颜色代码
plt.plot(x,np.sin(x-2),color='0.75') # 范围在0~1的灰度值
plt.plot(x,np.sin(x-3),color='#FFDD44') # 十六进制(RRGGBB,00~FF)
plt.plot(x,np.sin(x-4),color=(1.0,0.2,0.3)) # RGB 元组,范围0~1
plt.plot(x,np.sin(x-5),color='chartreuse') # HTML 颜色名称

使用linestyle可以调整线条的风格

plt.plot(x,x+0,linestyle='solid')
plt.plot(x,x+1,linestyle='dashed')
plt.plot(x,x+2,linestyle='dashdot')
plt.plot(x,x+3,linestyle='dotted')
plt.plot(x,x+4,linestyle='-') # 实线
plt.plot(x,x+5,linestyle='--') # 虚线
plt.plot(x,x+6,linestyle='-.') # 点画线
plt.plot(x,x+7,linestyle=':') # 实点线

也可以将linestyle和color组合起来,作为plt.plot()函数的一个非关键字使用。

plt.plot(x,x+0,'-g') # 绿色实线
plt.plot(x,x+1,'--c') # 青色虚线
plt.plot(x,x+2,'-.k') # 黑色点画线
plt.plot(x,x+3,':r') # 红色实点线

调整坐标轴上下限和设置图形标签

Matplotlib 自动为图形选择最合适的坐标轴上下限,但是有时自定义坐标轴上下限可能会更好。调整坐标轴上下限最基础的方法是plt.xlim()和plt.ylim()。

也可以使用plt.axis(),通过传入[xmin,xmax,ymin,ymax]对应的值,它还可以按照图形的内容自动收紧坐标轴,不留空白区域。

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10,100)
fig = plt.figure()
plt.plot(x,np.sin(x))
# plt.xlim(-1,11)
# plt.ylim(-1.5,1.5)
plt.axis([-1,11,-1.5,1.5])
plt.axis('tight') # 根据内容自动收紧坐标轴,不留空白
plt.axis('equal') # 设置分辨率为1:1,x轴单位长度和y轴单位长度相等
plt.title('y=sin(x)') # 标题
plt.xlabel('x') # x轴标题
plt.ylabel('sin(x)') # y轴标题

也可以使用plt.legend()方法创建图例。将每条的标签与其风格、颜色自动匹配。

plt.plot(x,np.sin(x),'-g',label='sin(x)')
plt.plot(x,np.cos(x),':b',label='cos(x)')
plt.axis('equal')
plt.legend() # 自动匹配

3170123f598741efb075f1b4e6e7f87e.png

20. Matplotlib 数据可视化(下):https://developer.aliyun.com/article/1529108

相关文章
|
数据可视化 程序员 Python
python生成可视化数据(matplotlib)进阶版
上期我们讲到如何用matplotlib模块将表格里的数据转换成可视化的折线图,但是,这里会有一个问题,表格里的数据是死的,是我随手创建的。在这一期,我将讲解如何通过requests+matplotlib等编写一个真实数据的可视化内容。
|
7月前
|
数据可视化 Python
python数据可视化 - matplotlib专题:带数据标签的双batch的Bar图绘制示例
python数据可视化 - matplotlib专题:带数据标签的双batch的Bar图绘制示例
85 0
|
编解码 数据可视化 索引
Matplotlib引领数据图表绘制
Matplotlib引领数据图表绘制
|
3月前
|
数据可视化 JavaScript 前端开发
Matplotlib动画制作:让数据生动起来!
Matplotlib动画制作:让数据生动起来!
63 0
|
5月前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
89 1
|
3月前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
在这个数据可视化的新纪元,让我们充分发挥 Python 的优势,用精彩的图表讲述数据背后的故事,为决策提供有力的支持,为交流带来清晰的视角。
36 4
|
5月前
|
存储 数据可视化 Python
Python中的数据可视化:使用Matplotlib和Pandas探索数据
【7月更文挑战第31天】 在数据科学的世界里,可视化是理解复杂数据集的关键。本文将引导你通过Python的Matplotlib库和Pandas库来揭示数据背后的故事。我们将一起构建图表,从简单的线图到复杂的热图,每一步都将用代码示例来丰富你的理解。文章不仅仅是展示如何绘制图表,更是一次深入探索数据结构和模式的旅程。
77 8
|
5月前
|
数据可视化 数据挖掘 Python
数据界的颜值担当!Python数据分析遇上Matplotlib、Seaborn,可视化美出新高度!
【7月更文挑战第24天】在数据科学领域,Python的Matplotlib与Seaborn将数据可视化升华为艺术,提升报告魅力。Matplotlib作为基石,灵活性强,新手友好;代码示例展示正弦波图的绘制与美化技巧。Seaborn针对统计图表,提供直观且美观的图形,如小提琴图,增强数据表达力。两者结合,创造视觉盛宴,如分析电商平台销售数据时,Matplotlib描绘趋势,Seaborn揭示类别差异,共塑洞察力强的作品,使数据可视化成为触动人心的艺术。
67 7
|
5月前
|
数据可视化 数据挖掘 开发者
数据可视化新纪元!Python + Matplotlib + Seaborn,让你的数据故事生动起来!
【7月更文挑战第23天】在数据驱动时代,Python通过Matplotlib与Seaborn引领数据可视化新纪元。Matplotlib基础强大,提供广泛绘图选项;Seaborn则简化流程,图表更美观,适合快速可视化。两者结合,轻松应对复杂定制需求,将数据转化为生动故事,支持决策与交流。
41 6
|
5月前
|
数据可视化 数据挖掘 Python
下一篇
DataWorks