前言

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matplotlib 的常见用法。

为什么选择Matplotlib?

如果某天你发现自己要学习 Matplotlib, 很可能是因为:

Matplotlib 是一个非常强大的 Python 画图工具;

手中有很多数据, 可是不知道该怎么呈现这些数据.

所以就找到了 Matplotlib. 它能帮你画出美丽的:

  • 线图;
  • 散点图;
  • 等高线图;
  • 条形图;
  • 柱状图;
  • 3D 图形,
  • 甚至是图形动画等等.

下面是一些例图:

数据可视化和预处理的实验总结_python

数据可视化和预处理的实验总结_数据可视化和预处理的实验总结_02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PR87pg2V-1584458424905)(数据可视化,看这一篇就够了/image-20200315143859501.png)]

Matplotlib 安装

MacOS

打开 Terminal 窗口, 输入以下内容

# python 3+ 请复制以下在 terminal 中执行
$ pip3 install matplotlib

# python 2+ 请复制以下在 terminal 中执行
$ pip install matplotlib

Windows

  • 确保你有安装 Visual Studio;
  • 去这个网址: https://pypi.python.org/pypi/matplotlib/
  • 找到一个适合你自己 python 版本的 wheel (.whl) 文件.

基础应用

使用import导入模块matplotlib.pyplot,并简写成plt 使用import导入模块numpy,并简写成np

import matplotlib.pyplot as plt
绘制简单的折线图

定义数据

squares = [1, 5, 8, 10, 15]

使用plt.figure定义一个图像窗口. 使用plt.plot画(x ,y)曲线. 使用plt.show显示图像.

plt.plot(squares)
plt.show()

数据可视化和预处理的实验总结_python_03

修改标签文字和线条粗细
import matplotlib.pyplot as plt

squares = [1, 2, 4, 5, 8]
plt.plot(squares)
# 设置图标标题,并给坐标轴加上标签
plt.title("Hello line chart", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()

数据可视化和预处理的实验总结_python_04

简单的线条

matplotlib 的 figure 就是一个 单独的 figure 小窗口, 小窗口里面还可以有更多的小图片.

使用import导入模块matplotlib.pyplot,并简写成plt 使用import导入模块numpy,并简写成np

import matplotlib.pyplot as plt
import numpy as np

使用np.linspace定义x:范围是(-3,3);个数是50. 仿真一维数据组(x ,y1)表示曲线1. 仿真一维数据组(x ,y2)表示曲线2.

x = np.linspace(-3, 3, 50)
y1 = 2*x + 1
y2 = x**2

使用plt.figure定义一个图像窗口. 使用plt.plot画(x ,y1)曲线.

plt.figure()
plt.plot(x, y1)
plt.show()

数据可视化和预处理的实验总结_python_05

使用plt.figure定义一个图像窗口:编号为3;大小为(8, 5). 使用plt.plot画(x ,y2)曲线. 使用plt.plot画(x ,y1)曲线,曲线的颜色属性(color)为红色;曲线的宽度(linewidth)为1.0;曲线的类型(linestyle)为虚线. 使用plt.show显示图像.

数据可视化和预处理的实验总结_数据可视化和预处理的实验总结_06

Bar 柱状图
生成基本图形

向上向下分别生成12个数据,X为 0 到 11 的整数 ,Y是相应的均匀分布的随机数据。 使用的函数是plt.bar,参数为X和Y:

import matplotlib.pyplot as plt
import numpy as np

n = 12
X = np.arange(n)
Y1 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)
Y2 = (1 - X / float(n)) * np.random.uniform(0.5, 1.0, n)

plt.bar(X, +Y1)
plt.bar(X, -Y2)

plt.xlim(-.5, n)
plt.xticks(())
plt.ylim(-1.25, 1.25)
plt.yticks(())
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
plt.show()

这样我们就生成了下图所示的柱状图基本框架:

数据可视化和预处理的实验总结_python_07

Scatter 散点图
绘制单个点

使用scatter()绘制散点图并设置其样式

import matplotlib.pyplot as plt
import matplotlib as mpl

# 解决中文乱码问题
# 用来正常显示负号
mpl.rcParams['axes.unicode_minus'] = False
plt.scatter(-5, 8, s=200)
# 设置图表标题并给坐标轴加上标签
plt.title(u"单点散点图", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)
plt.show()

数据可视化和预处理的实验总结_python_08

绘制一系列的点
import matplotlib.pyplot as plt
#
x_value = [1, 2, 3, 4, 5]
y_value = [1, 2, 4, 5, 8]
plt.scatter(x_value, y_value, s=100)
plt.show()

数据可视化和预处理的实验总结_坐标轴_09

绘制散点图

首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据。生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集,并图像化这个数据集。每一个点的颜色值用T来表示:

import matplotlib.pyplot as plt
import numpy as np

n = 1024    # data size
X = np.random.normal(0, 1, n) # 每一个点的X值
Y = np.random.normal(0, 1, n) # 每一个点的Y值
T = np.arctan2(Y,X) # for color value

数据集生成完毕,现在来用scatterplot这个点集,鼠标点上去,可以看到这个函数的各个parameter的描述

输入X和Y作为location,size=75,颜色为T,color map用默认值,透明度alpha 为 50%。 x轴显示范围定位(-1.5,1.5),并用xtick()函数来隐藏x坐标轴,y轴同理:

plt.scatter(X, Y, s=75, c=T, alpha=.5)

plt.xlim(-1.5, 1.5)
plt.xticks(())  # ignore xticks
plt.ylim(-1.5, 1.5)
plt.yticks(())  # ignore yticks

plt.show()

数据可视化和预处理的实验总结_数据可视化和预处理的实验总结_10