目录
目录
前言
学习Matplotlib是探索数据可视化领域的重要一步。Matplotlib是一个功能强大、灵活且广泛使用的Python绘图库,它能够帮助你将数据以清晰、美观的方式呈现。在这次学习中,你将了解如何使用Matplotlib创建各种类型的图表,从简单的线图到复杂的三维图表。
一、matplotlib安装
下面介绍如何安装 matplotlib,安装方法有下面两种。
1.通过pip工具安装
在系统搜索框中输入cmd,单点“命令提示符”命令,打开“命令提示符”窗口,在命令提示符后输入安装命令。通过 pip 工具安装,安装命令如下:
pip install matplotlib
2.通过PyCharm开发环境安装
运行PyCharm,选择 File 然后点击 Settings 命令,打开 Setting 窗口,选择 Project Interpreter 选项,然后点击+(添加)按钮,图片如下。
此时打开 Available Packages 窗口,在搜索文本框中输入需要添加的模块名称,如 matplotlib ,然后在列表中选择需要安装的模块,图片如下,单击 Install Package 按钮即可实现 matplotlib 模块的安装。
二、常见绘图属性
2.1 绘图标记
绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用 plot() 方法的 marker 参数来定义。
以下实例定义了实心圆标记:
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([1, 3, 4, 5, 8, 9, 6, 1, 3, 4, 5, 2, 4])
plt.plot(ypoints, marker='o')
plt.show()
2.2 基本颜色
Matplotlib中最常用的颜色有以下八种,其字母表示、缩写及图例如下:
颜色 | 字母 | 缩写 |
---|---|---|
红色 | red | r |
绿色 | green | g |
蓝色 | blue | b |
黄色 | yellow | y |
蓝绿色 | cyan | c |
粉紫色 | magenta | m |
黑色 | black | k |
白色 | white | w |
2.3 线类型
线类型标记 | 描述 | |
---|---|---|
'-' | 实线 | |
':' | 虚线 | |
'--' | 破折线 | |
'-.' | 点划线 |
2.4 标记大小与颜色
我们可以自定义标记的大小与颜色,使用的参数分别是:
- markersize,简写为 ms:定义标记的大小。
- markerfacecolor,简写为 mfc:定义标记内部的颜色。
- markeredgecolor,简写为 mec:定义标记边框的颜色。
设置标记大小:
import matplotlib.pyplot as plt
import numpy as np
ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, marker='o', ms=20)
plt.show()
三、基本绘图
3.1 折线图
plot()函数画出一系列的点,并且用线将它们连接起来。看下例子:
x = np.linspace(0, np.pi)
y_sin = np.sin(x)
y_cos = np.cos(x)
ax1.plot(x, y_sin)
ax2.plot(x, y_sin, 'go--', linewidth=2, markersize=12)
ax3.plot(x, y_cos, color='red', marker='+', linestyle='dashed')
在上面的三个Axes上作画。plot,前面两个参数为x轴、y轴数据。ax2的第三个参数是 MATLAB风格的绘图,对应ax3上的颜色,marker,线型。
3.2 散点图
import matplotlib.pyplot as plt
import numpy as np
x = np.arange(10)
y = np.random.randn(10)
plt.scatter(x, y, color='red', marker='+')
plt.show()
散点图与折线图类似,也是一个个点构成的。但不同之处在于,散点图的各点之间不会按照前后关系以线连接起来。
3.3 饼图
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # only "explode" the 2nd slice (i.e. 'Hogs')
fig1, (ax1, ax2) = plt.subplots(2)
ax1.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True)
ax1.axis('equal')
ax2.pie(sizes, autopct='%1.2f%%', shadow=True, startangle=90, explode=explode,
pctdistance=1.12)
ax2.axis('equal')
ax2.legend(labels=labels, loc='upper right')
plt.show()
饼图也存在各种类型,主要包括基础饼图、分类饼图、立体感带阴影的饼图、环形图等。
3.4 条形图
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(1)
x = np.arange(5)
y = np.random.randn(5)
fig, axes = plt.subplots(ncols=2, figsize=plt.figaspect(1./2))
vert_bars = axes[0].bar(x, y, color='lightblue', align='center')
horiz_bars = axes[1].barh(x, y, color='lightblue', align='center')
#在水平或者垂直方向上画线
axes[0].axhline(0, color='gray', linewidth=2)
axes[1].axvline(0, color='gray', linewidth=2)
plt.show()
条形图是一种以长方形的长度为变量的统计图表。柱形图用来比较两个或两个以上的数据(不同时间或者不同条件),只有一个变量,通常用于较小的数据集分析。
3.5 双轴图
import matplotlib.pyplot as plt
import numpy as np
# 准备数据
t = np.arange(0.01, 10.0, 0.01)
data1 = np.exp(t)
data2 = np.sin(2 * np.pi * t)
# 设置主轴
fig, ax1 = plt.subplots()
color = 'tab:red'
ax1.set_xlabel('time (s)')
ax1.set_ylabel('exp', color=color)
ax1.plot(t, data1, color=color)
ax1.tick_params(axis='y', labelcolor=color)
# 设置次轴
ax2 = ax1.twinx()
color = 'tab:blue'
ax2.set_ylabel('sin', color=color)
ax2.plot(t, data2, color=color)
ax2.tick_params(axis='y', labelcolor=color)
fig.tight_layout()
plt.show()
在一些应用场景中,有时需要绘制两个 x 轴或两个 y 轴,这样可以更直观地显现图像,从而获取更有效的数据。Matplotlib 提供的 twinx() 和 twiny() 函数,除了可以实现绘制双轴的功能外,还可以使用不同的单位来绘制曲线,比如一个轴绘制对函数,另外一个轴绘制指数函数。
3.6 泡泡图
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2 # 0 to 15 point radii
plt.scatter(x, y, s=area, c=colors, alpha=0.5)
plt.show()
泡泡图是一种可视化多维数据的图表类型,通常用于同时表示三个维度的数据,其中两个维度决定了点的位置,而第三个维度通过点的大小来表示。在Matplotlib中,可以使用`plt.scatter()`函数创建泡泡图。
3.8 箱型图
import matplotlib.pyplot as plt
import numpy as np
# 利用随机数种子使每次生成的随机数相同
np.random.seed(10)
collectn_1 = np.random.normal(100, 10, 200)
collectn_2 = np.random.normal(80, 30, 200)
collectn_3 = np.random.normal(90, 20, 200)
collectn_4 = np.random.normal(70, 25, 200)
data_to_plot = [collectn_1, collectn_2, collectn_3, collectn_4]
fig = plt.figure()
# 创建绘图区域
ax = fig.add_subplot(111)
# 创建箱型图
bp = ax.boxplot(data_to_plot)
plt.show()
箱型图(也称为盒须图)于 1977 年由美国著名统计学家约翰·图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。
在箱型图中,我们从上四分位数到下四分位数绘制一个盒子,然后用一条垂直触须(形象地称为“盒须”)穿过盒子的中间。上垂线延伸至上边缘(最大值),下垂线延伸至下边缘(最小值)。
3.9 高等线图
import numpy as np
import matplotlib.pyplot as plt
"""
np.linspace()在指定的大间隔内[-4.0,4.0],返回固定间隔100个数据
"""
x = np.linspace(-4.0, 4.0, 100)
y = np.linspace(-4.0, 4.0, 100)
"""
np.meshgrid()两个坐标轴上的点在平面上画格,产生一个以向量x为行,向量y为列的矩
"""
X, Y = np.meshgrid(x, y)
# 定义Z与X,Y之间的关系,即原方程x²+y²=r²
Z = np.sqrt(X ** 2 + Y ** 2)
fig, axes = plt.subplots(1, 2, figsize=(16, 9))
axes[0].contour(X, Y, Z, alpha=0.75, cmap=plt.cm.hot)
cp = axes[1].contourf(X, Y, Z, cmap=plt.cm.hot)
fig.colorbar(cp)
plt.show()
等高线图(也称“水平图”)是一种在二维平面上显示 3D 图像的方法。等高线有时也被称为 “Z 切片”,如果您想要查看因变量 Z 与自变量 X、Y 之间的函数图像变化(即 Z=f(X,Y)),那么采用等高线图最为直观。
四、总结
数据统计得再好都不如一张图表清晰、直观。本章用大量的举例详细地介绍了 Matplotlib 图表,其
根本任丁能够使读者全面透彻地了解和掌握最基础的图表,并应用到实际数据统计分析工作甲,同时也为以后学习其他绘图库奠定坚实的基础。
如有想知道更加详细信息请前往Matplotlib — Visualization with Python获取更多内容。
想要了解更多关于大数据算法绘图功能请前往Quick BI官网_BI数据可视化分析工具_智能报表-阿里云 (aliyun.com)