Matplotlib+Seaborn

Matplotlib 是 Python 中一种第三方可视化绘图库,Matplotlib是 MATLAB+Plot+Library 的缩写,其绘图风格与 MATLAB 类似。Seaborn 在 Matplotlib 的基础上,为图形样式和颜色设置提供了现代化的设置为常用的统计图形定义了许多简单的高级函数,并与 Pandas.DataFrame 的功能有机结合。

版本

[1]:
import matplotlib
import seaborn

matplotlib.__version__,seaborn.__version__
[1]:
('3.1.1', '0.9.0')

别名

遵循传统,使用别名mpl导入 Matplotlib;sns导入 Seaborn;plt导入 matplotlib.pyplot,这是 matplotlib 中最常用的绘图接口。

[2]:
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
%matplotlib inline

加入%matplotlib inline会在 Notebook 中启动静态图形;加入sns.set()使图像拥有更好的视觉效果。

Figure

在 Matplotlib 中,图像为一个 figure 对象,在 Figure 对象中可以包含一个或多个 Axes 对象。每个Axes(ax) 对象都是一个拥有自己坐标系统的绘图区域,所属关系如下图所示:

Figure(图片来自 Matplotlib 官网)

其中,Title 为图像标题,Axis 为坐标轴, Label 为坐标轴标注,Tick 为刻度线,Tick Label 为刻度注释。

[3]:
# 生成数据
import numpy as np
x = np.linspace(1,10,50)
y = np.sin(x)

# 创建一个空的 figure 对象
fig = plt.figure()

# 添加标签
plt.xlabel('x')
plt.ylabel('y')
plt.title('y = sin(x)')

# 绘图
plt.plot(x, y)
plt.show()
../_images/Python_Matplotlib+Seaborn_7_0.png

图像导出

在 Matplotlib 中,可以通过 savefig() 命令将图像保存为文件:

[4]:
fig.savefig('sin(x).png')

在 Notebook 中, 可以通过 IPython.display.Image 命令导入图像:

[5]:
 from IPython.display import Image
Image('sin(x).png')
[5]:
../_images/Python_Matplotlib+Seaborn_11_0.png

常用图像绘制

线形图

可通过 plt.plot() 方法绘制线性图:

[6]:
x = np.linspace(1,10,30)
y = np.sin(x)
plt.plot(x,y)
[6]:
[<matplotlib.lines.Line2D at 0x2ba72430080>]
../_images/Python_Matplotlib+Seaborn_13_1.png

散点图

可通过 plt.plot()plt.scatter) 方法绘制散点图:

[7]:
plt.plot(x, y, 'o')

#plt.scatter(x, y, marker='o')
[7]:
[<matplotlib.lines.Line2D at 0x2ba7248ba90>]
../_images/Python_Matplotlib+Seaborn_15_1.png

柱形图

可通过 plt.bar() 方法绘制柱形图:

[8]:
x = list('ABCDE')
y = [2,4,6,8,10]
plt.bar(x,y)
[8]:
<BarContainer object of 5 artists>
../_images/Python_Matplotlib+Seaborn_17_1.png

条形图

可通过 plt.barh() 方法绘制条形图:

[9]:
x = list('ABCDE')
y = [2,4,6,8,10]
plt.barh(x,y)
[9]:
<BarContainer object of 5 artists>
../_images/Python_Matplotlib+Seaborn_19_1.png

Seaborn 高级方法

Seaborn 提供了许多高级函数,便于进行数据分析工作。

sns.pairplot()

通过 sns.pairplot() 方法,能绘制出数据集中的成对关系。

[10]:
# 导入 Iris 数据集
import pandas as pd
iris = pd.read_csv('./data/iris.csv')
sns.pairplot(iris)
[10]:
<seaborn.axisgrid.PairGrid at 0x2ba72598a20>
../_images/Python_Matplotlib+Seaborn_21_1.png

在此基础上,可以利用 hue 变量区分种类:

[11]:
sns.pairplot(iris ,hue ='species')
[11]:
<seaborn.axisgrid.PairGrid at 0x2ba72dcb780>
../_images/Python_Matplotlib+Seaborn_23_1.png

想进一步了解 Seaborn 可以点击这里,访问 Seaborn 官网