type
status
date
slug
summary
tags
category
icon
password
 

引言

当谈论数据分析和数据可视化时,Matplotlib是一个强大的工具,它不仅提供了丰富的功能,还允许用户创建高质量的图形和图表。本篇博客旨在帮助你掌握Matplotlib的基础知识和高级技巧,以便你能够有效地利用它来展示数据、解释趋势和传达信息。
在这篇博客中,我们将深入探讨Matplotlib的各个方面,从数据可视化的基础开始,包括折线图、散点图、条形图、直方图和饼图等,一直到更高级的图形元素,如图形注释、箭头、图例高级用法、区域填充和阴影效果。我们还将学习如何创建三维数据可视化、动画和交互式控件,以及如何导出图形文件、设置图形风格和自定义色彩和配色方案。
本文提供了各种示例代码,图像就不提供出来了,简单示例可以通过复制代码运行获得图像
原因:个人采用的是github图床,利用jsDelivr 提供的全球 CDN 加速
github 和jsdelivr 都有大小限制: GitHub 图床仓库大小不能超过1G。 因为GitHub 原则上是反对仓库图床化的,当仓库超过1G 后会有人工审核仓库内容,如果发现用来做图床,轻则删库重则封号
当然,主要还是简单图例我觉得太多,太麻烦......放重点图例吧哈哈

1. Matplotlib 简介和安装

  • Matplotlib简介:Matplotlib是Python中最常用的数据可视化库之一,用于创建静态、动态、交互式图表。
  • 安装Matplotlib:使用pipconda可以轻松安装Matplotlib。
示例代码:

python

# 安装Matplotlib !pip install matplotlib
Python

2. Matplotlib 绘图原理

  • 绘图原理:Matplotlib采用面向对象的方式来创建图表。所有图表元素都是对象,从Figure对象到Axes对象,都是构建图表的关键部分。

3. Matplotlib 常用模块和函数

pyplot 模块

  • pyplot简介pyplot是Matplotlib的一个子模块,提供了一种类似于MATLAB的界面,用于绘制图表。
示例代码:

python

import matplotlib.pyplot as plt
Python

Figure 对象和子图

  • Figure对象Figure对象是图表的顶层容器,用于容纳图表中的所有元素。
  • 子图:子图是Axes对象的容器,用于在一个Figure对象中容纳多个图表。
示例代码:

python

# 创建一个Figure对象 fig = plt.figure() # 创建一个子图 ax = fig.add_subplot(111)
Python

Axes 对象和坐标系

  • Axes对象Axes对象是图表的主要绘图区域,用于绘制数据点、线条、文本等。
  • 坐标系Axes对象具有X和Y坐标轴,你可以在坐标轴上绘制数据。
示例代码:

python

# 绘制一条线 ax.plot([0, 1, 2], [0, 1, 4])
Python

图形属性设置

  • 线条样式:通过linestyle参数设置线条样式。
  • 颜色:通过color参数设置线条颜色。
  • 标记点:通过marker参数设置标记点样式。
示例代码:

python

# 自定义线条样式、颜色和标记点 ax.plot([0, 1, 2], [0, 1, 4], linestyle='--', color='red', marker='o')
Python

文本标注和注释

  • 添加文本标注:使用text()函数在图表中添加文本标注。
  • 添加注释:使用annotate()函数添加带箭头的注释。
示例代码:

python

# 添加文本标注 ax.text(1, 3, 'Data Point (1, 3)') # 添加注释 ax.annotate('Max Value', xy=(2, 4), xytext=(1.5, 3.5), arrowprops=dict(arrowstyle='->'))
Python

python

import matplotlib.pyplot as plt # 创建一个Figure对象 fig = plt.figure() # 创建一个子图 ax = fig.add_subplot(111) # 调整坐标轴刻度线和标签的颜色为白色——我的jupyter notebook的背景色是黑色,改与自己主题颜色适应的坐标轴颜色 ax.tick_params(axis='both', colors='white') # 绘制一条线 ax.plot([0, 1, 2], [0, 1, 4]) # 自定义线条样式、颜色和标记点 ax.plot([0, 1, 2], [0, 1, 4], linestyle='--', color='red', marker='o') # 添加文本标注 ax.text(1, 3, 'Data Point (1, 3)') # 添加注释 ax.annotate('Max Value', xy=(2, 4), xytext=(1.5, 3.5), arrowprops=dict(arrowstyle='->')) plt.show()
Python

4.折线图绘制

单条折线图

绘制一个简单的单条折线图。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3, 4, 5] y = [10, 8, 12, 15, 7] # 绘制折线图 plt.plot(x, y, label='Line 1', marker='o', linestyle='-', color='blue') # 添加标题和标签 plt.title('单条折线图') plt.xlabel('X轴') plt.ylabel('Y轴') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.plot(x, y, label='Line 1', marker='o', linestyle='-', color='blue'):这行代码绘制了折线图。xy分别是X轴和Y轴的数据,label用于设置图例标签,marker指定标记点的样式,linestyle设置线条样式,color设置线条颜色。
  • plt.title('单条折线图'):添加标题。
  • plt.xlabel('X轴')plt.ylabel('Y轴'):添加X轴和Y轴的标签。
  • plt.legend():显示图例。
  • plt.show():显示图表。

多条折线图

绘制多条折线图。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3, 4, 5] y1 = [10, 8, 12, 15, 7] y2 = [5, 12, 6, 8, 11] # 绘制多条折线图 plt.plot(x, y1, label='Line 1', marker='o', linestyle='-', color='blue') plt.plot(x, y2, label='Line 2', marker='x', linestyle='--', color='red') # 添加标题和标签 plt.title('多条折线图') plt.xlabel('X轴') plt.ylabel('Y轴') # 显示图例 plt.legend() # 显示图表 plt.show()
Python

5.散点图绘制

散点图基本绘制

绘制一个基本的散点图。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3, 4, 5] y = [10, 8, 12, 15, 7] # 绘制散点图 plt.scatter(x, y, label='Data Points', color='blue', marker='o') # 添加标题和标签 plt.title('基本散点图') plt.xlabel('X轴') plt.ylabel('Y轴') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.scatter(x, y, label='Data Points', color='blue', marker='o'):这行代码绘制了散点图。xy分别是X轴和Y轴的数据,label用于设置图例标签,color设置散点的颜色,marker指定散点的样式。

散点图颜色映射

使用颜色映射来为散点图中的数据点添加颜色。下面是一个带有颜色映射的散点图示例:

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.random.rand(100) y = np.random.rand(100) colors = np.random.rand(100) # 随机生成颜色数据 # 绘制散点图,使用颜色映射 plt.scatter(x, y, c=colors, cmap='viridis', label='Data Points') # 添加标题和标签 plt.title('散点图颜色映射') plt.xlabel('X轴') plt.ylabel('Y轴') # 添加颜色映射条 plt.colorbar() # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • c=colors:通过c参数指定颜色数据。
  • cmap='viridis':通过cmap参数指定颜色映射。

散点图大小映射

根据数据的大小来映射散点的大小。下面是一个带有大小映射的散点图示例:

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.random.rand(100) y = np.random.rand(100) sizes = np.random.rand(100) * 100 # 随机生成大小数据 # 绘制散点图,使用大小映射 plt.scatter(x, y, s=sizes, label='Data Points', alpha=0.7) # 添加标题和标签 plt.title('散点图大小映射') plt.xlabel('X轴') plt.ylabel('Y轴') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • s=sizes:通过s参数指定大小数据。
  • alpha=0.7:通过alpha参数设置散点的透明度。

6.条形图绘制

水平条形图

绘制一个水平条形图。

python

import matplotlib.pyplot as plt # 创建示例数据 categories = ['Category A', 'Category B', 'Category C', 'Category D'] values = [30, 50, 40, 60] # 绘制水平条形图 plt.barh(categories, values, color='skyblue') # 添加标题和标签 plt.title('水平条形图') plt.xlabel('值') plt.ylabel('类别') # 显示图表 plt.show()
Python
  • plt.barh(categories, values, color='skyblue'):这行代码绘制了水平条形图。categories是类别标签,values是条形的值,color设置条形的颜色。

垂直条形图

绘制一个垂直条形图。

python

import matplotlib.pyplot as plt # 创建示例数据 categories = ['Category A', 'Category B', 'Category C', 'Category D'] values = [30, 50, 40, 60] # 绘制垂直条形图 plt.bar(categories, values, color='salmon') # 添加标题和标签 plt.title('垂直条形图') plt.xlabel('类别') plt.ylabel('值') # 显示图表 plt.show()
Python
  • plt.bar(categories, values, color='salmon'):这行代码绘制了垂直条形图,参数设置与水平条形图类似。

分组条形图和堆积条形图

分组条形图和堆积条形图可以通过调整数据和条形的宽度来创建。以下是一个示例:

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 categories = ['Category A', 'Category B', 'Category C', 'Category D'] values1 = [30, 50, 40, 60] values2 = [20, 40, 60, 30] width = 0.35 # 条形的宽度 # 计算每个类别的中心位置 x = np.arange(len(categories)) # 绘制分组条形图 plt.bar(x - width/2, values1, width, label='Group 1', color='skyblue') plt.bar(x + width/2, values2, width, label='Group 2', color='salmon') # 添加标题和标签 plt.title('分组条形图') plt.xlabel('类别') plt.ylabel('值') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.bar(x - width/2, values1, width, label='Group 1', color='skyblue'):这行代码绘制了两组分组条形图。x - width/2用于确定第一组的位置,x + width/2用于确定第二组的位置。

7.直方图绘制

单变量直方图

绘制一个单变量直方图,以探索单个变量的分布。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据(单变量) data = np.random.randn(1000) # 绘制单变量直方图 plt.hist(data, bins=20, color='skyblue', edgecolor='black') # 添加标题和标签 plt.title('单变量直方图') plt.xlabel('值') plt.ylabel('频率') # 显示图表 plt.show()
Python
  • plt.hist(data, bins=20, color='skyblue', edgecolor='black'):这行代码绘制了单变量直方图。data是要分析的数据,bins参数指定了直方图的箱数,color设置直方图的颜色,edgecolor设置边界颜色。

双变量直方图

绘制一个双变量直方图,用于探索两个变量之间的关系。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据(双变量) x = np.random.randn(1000) y = 2 * x + np.random.randn(1000) # 绘制双变量直方图 plt.hist2d(x, y, bins=20, cmap='viridis') # 添加标题和标签 plt.title('双变量直方图') plt.xlabel('X轴') plt.ylabel('Y轴') # 添加颜色条 plt.colorbar() # 显示图表 plt.show()
Python
  • plt.hist2d(x, y, bins=20, cmap='viridis'):这行代码绘制了双变量直方图。xy是两个变量,bins参数指定了直方图的箱数,cmap参数设置颜色映射。

直方图密度曲线

直方图密度曲线也被称为核密度估计,它可用于估计数据的连续概率密度。

python

import matplotlib.pyplot as plt import numpy as np from scipy.stats import norm # 创建示例数据 data = np.random.randn(1000) # 绘制直方图 plt.hist(data, bins=20, density=True, color='skyblue', alpha=0.7, edgecolor='black') # 绘制密度曲线 mu, std = norm.fit(data) xmin, xmax = plt.xlim() x = np.linspace(xmin, xmax, 100) p = norm.pdf(x, mu, std) plt.plot(x, p, 'k', linewidth=2) # 添加标题和标签 plt.title('直方图和密度曲线') plt.xlabel('值') plt.ylabel('密度') # 显示图表 plt.show()
Python
  • plt.hist(data, bins=20, density=True, color='skyblue', alpha=0.7, edgecolor='black'):这行代码绘制了直方图,density=True参数将频率转换为密度。
  • norm.fit(data):使用正态分布拟合数据以绘制密度曲线。
  • norm.pdf(x, mu, std):使用正态分布的概率密度函数绘制密度曲线。

8.饼图绘制

基本饼图

绘制一个基本的饼图,以表示数据占比。

python

import matplotlib.pyplot as plt # 创建示例数据 labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] colors = ['skyblue', 'salmon', 'lightgreen', 'lightcoral'] # 绘制基本饼图 plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90) # 添加标题 plt.title('基本饼图') # 显示图表 plt.show()
Python
  • plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90):这行代码绘制了基本饼图。sizes是数据占比,labels是每个切片的标签,colors是切片颜色,autopct用于在饼图中显示百分比,startangle指定饼图的起始角度。

饼图切片突出和排序

可以通过突出某个切片来强调数据,也可以通过排序来改变切片的顺序。

python

import matplotlib.pyplot as plt # 创建示例数据 labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] colors = ['skyblue', 'salmon', 'lightgreen', 'lightcoral'] # 突出切片 B explode = (0, 0.1, 0, 0) # 绘制突出切片的饼图并排序 plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90, explode=explode, shadow=True) # 添加标题 plt.title('突出切片和排序的饼图') # 显示图表 plt.show()
Python
  • explode = (0, 0.1, 0, 0):通过explode参数,我们突出了切片 B。
  • shadow=True:为饼图添加阴影效果。

饼图标签和百分比

可以在饼图上添加标签和百分比。

python

import matplotlib.pyplot as plt # 创建示例数据 labels = ['A', 'B', 'C', 'D'] sizes = [15, 30, 45, 10] colors = ['skyblue', 'salmon', 'lightgreen', 'lightcoral'] # 绘制饼图并添加标签和百分比 plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=90, pctdistance=0.85) # 添加标题 plt.title('带标签和百分比的饼图') # 显示图表 plt.show()
Python
  • autopct='%1.1f%%':通过autopct参数,我们在饼图中显示百分比。
  • pctdistance=0.85:通过pctdistance参数,我们调整了百分比标签的位置。

9.坐标系

轴范围和刻度设置

可以使用plt.xlim()plt.ylim()函数设置X轴和Y轴的范围,并使用plt.xticks()plt.yticks()函数设置刻度。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘制图表 plt.plot(x, y, label='sin(x)') # 设置X轴和Y轴范围 plt.xlim(0, 10) plt.ylim(-1, 1) # 设置X轴和Y轴刻度 plt.xticks(np.arange(0, 11, 2)) plt.yticks([-1, -0.5, 0, 0.5, 1]) # 添加标题 plt.title('坐标系范围和刻度设置') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.xlim(0, 10):通过plt.xlim()函数,我们设置了X轴范围为0到10。
  • plt.ylim(-1, 1):通过plt.ylim()函数,我们设置了Y轴范围为-1到1。
  • plt.xticks(np.arange(0, 11, 2)):通过plt.xticks()函数,我们设置了X轴的刻度为0到10,步长为2。
  • plt.yticks([-1, -0.5, 0, 0.5, 1]):通过plt.yticks()函数,我们设置了Y轴的刻度为指定的值。

轴标签和标题

可以使用plt.xlabel()plt.ylabel()函数设置X轴和Y轴的标签,使用plt.title()函数设置标题。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘制图表 plt.plot(x, y, label='sin(x)') # 设置X轴和Y轴标签 plt.xlabel('X轴') plt.ylabel('Y轴') # 添加标题 plt.title('坐标系标签和标题设置') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.xlabel('X轴'):通过plt.xlabel()函数,我们设置了X轴的标签。
  • plt.ylabel('Y轴'):通过plt.ylabel()函数,我们设置了Y轴的标签。
  • plt.title('坐标系标签和标题设置'):通过plt.title()函数,我们设置了图表的标题。

网格线设置

可以使用plt.grid()函数来设置网格线的显示和样式。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.linspace(0, 10, 100) y = np.sin(x) # 绘制图表 plt.plot(x, y, label='sin(x)') # 启用网格线 plt.grid(True) # 添加标题 plt.title('网格线设置') # 显示图例 plt.legend() # 显示图表 plt.show()
Python
  • plt.grid(True):通过plt.grid()函数,我们启用了网格线。

10.图形布局

子图分割和排列

使用plt.subplot()函数来创建和排列子图。此函数的参数包括行数、列数和子图的索引。

python

import matplotlib.pyplot as plt # 创建一个2x2的子图布局,选择第一个子图 plt.subplot(2, 2, 1) plt.plot([1, 2, 3, 4]) plt.title('子图1') # 选择第二个子图 plt.subplot(2, 2, 2) plt.plot([4, 3, 2, 1]) plt.title('子图2') # 选择第三个子图 plt.subplot(2, 2, 3) plt.plot([1, 2, 1, 2]) plt.title('子图3') # 选择第四个子图 plt.subplot(2, 2, 4) plt.plot([2, 1, 2, 1]) plt.title('子图4') # 调整子图间距 plt.tight_layout() # 显示图表 plt.show()
Python
在这个示例中,创建了一个2x2的子图布局,并在每个子图中绘制了不同的数据。plt.subplot()函数用于选择要绘制的子图,使用plt.title()函数为每个子图添加标题。plt.tight_layout()用于自动调整子图的间距,以确保它们适合图表。

坐标系网格布局

Matplotlib还允许在单个图形中创建多个坐标系,以更复杂的方式排列它们。

python

import matplotlib.pyplot as plt # 创建一个包含2x2坐标系的图形 fig, axes = plt.subplots(2, 2) # 在每个坐标系中绘制数据 axes[0, 0].plot([1, 2, 3, 4]) axes[0, 0].set_title('坐标系1') axes[0, 1].plot([4, 3, 2, 1]) axes[0, 1].set_title('坐标系2') axes[1, 0].plot([1, 2, 1, 2]) axes[1, 0].set_title('坐标系3') axes[1, 1].plot([2, 1, 2, 1]) axes[1, 1].set_title('坐标系4') # 调整子图间距 plt.tight_layout() # 显示图表 plt.show()
Python
在这个示例中,使用plt.subplots()创建了一个包含2x2坐标系的图形,然后在每个坐标系中绘制了不同的数据。最后,plt.tight_layout()用于自动调整坐标系之间的间距。

11.多轴图绘制

共享轴和独立轴

使用plt.subplots()函数创建具有共享或独立轴的多轴图。

共享轴

python

import matplotlib.pyplot as plt import numpy as np # 创建一个具有共享X轴的多轴图 fig, axes = plt.subplots(2, 1, sharex=True) # 绘制数据到不同子图 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) axes[0].plot(x, y1) axes[0].set_title('共享X轴的子图1') axes[1].plot(x, y2) axes[1].set_title('共享X轴的子图2') # 显示图表 plt.show()
Python
在这个示例中,创建了一个具有共享X轴的多轴图,两个子图共享相同的X轴。

独立轴

python

import matplotlib.pyplot as plt # 创建具有独立轴的多轴图 fig, axes = plt.subplots(1, 2, sharey=True) # 绘制数据到不同子图 data1 = [1, 2, 3, 4, 5] data2 = [5, 4, 3, 2, 1] axes[0].plot(data1) axes[0].set_title('独立Y轴的子图1') axes[1].plot(data2) axes[1].set_title('独立Y轴的子图2') # 显示图表 plt.show()
Python
在这个示例中,创建了一个具有独立Y轴的多轴图,两个子图具有不同的Y轴。

双坐标系图和次坐标轴

使用twinx()函数创建双坐标系图,允许在同一图中绘制具有不同Y轴的数据。

python

import matplotlib.pyplot as plt # 创建双坐标系图 fig, ax1 = plt.subplots() data1 = [1, 2, 3, 4, 5] data2 = [10, 8, 6, 4, 2] # 绘制第一个数据集 ax1.plot(data1, color='skyblue', label='数据集1') ax1.set_xlabel('X轴') ax1.set_ylabel('Y轴1', color='skyblue') ax1.legend(loc='upper left') # 创建第二个Y轴 ax2 = ax1.twinx() # 绘制第二个数据集 ax2.plot(data2, color='salmon', label='数据集2') ax2.set_ylabel('Y轴2', color='salmon') ax2.legend(loc='upper right') # 添加标题 plt.title('双坐标系图') # 显示图表 plt.show()
Python
在这个示例中,创建了一个双坐标系图,同时绘制了两个数据集,每个数据集具有不同的Y轴。使用ax1.twinx()来创建第二个Y轴,并在同一图中绘制两个数据集。

次坐标轴

使用secondary_xaxis()secondary_yaxis()函数来创建次坐标轴,以表示不同尺度的数据。这通常用于在同一图中显示不同单位的数据。

12.高级图形元素

图形注释和箭头

使用plt.annotate()函数添加图形注释和箭头。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3] y = [2, 4, 6] # 绘制数据 plt.plot(x, y) # 添加图形注释和箭头 plt.annotate('重要点', xy=(2, 4), xytext=(2.5, 5), arrowprops=dict(arrowstyle='->', lw=1.5), fontsize=12, color='red') # 显示图表 plt.show()
Python
在这个示例中,我们使用plt.annotate()函数在数据点 (2, 4) 处添加了一个注释文本,并使用箭头指向 (2.5, 5) 处。

图例高级用法

Matplotlib的图例允许自定义图例的位置、标签、颜色等属性。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3] y1 = [2, 4, 6] y2 = [3, 5, 7] # 绘制数据 plt.plot(x, y1, label='数据集1', color='skyblue') plt.plot(x, y2, label='数据集2', color='salmon') # 自定义图例 plt.legend(loc='upper left', title='数据集', title_fontsize=12, fontsize=10) # 显示图表 plt.show()
Python
在这个示例中,使用plt.legend()函数自定义了图例的位置、标题、标题字体大小和图例项的字体大小。

区域填充和阴影效果

使用fill_between()函数来填充区域和创建阴影效果。

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 x = np.linspace(0, 10, 100) y1 = np.sin(x) y2 = np.cos(x) # 绘制数据 plt.plot(x, y1, label='sin(x)', color='skyblue') plt.plot(x, y2, label='cos(x)', color='salmon') # 填充区域 plt.fill_between(x, y1, y2, where=(y1 > y2), interpolate=True, color='lightgray', alpha=0.5, label='sin(x) > cos(x)') # 自定义图例 plt.legend() # 显示图表 plt.show()
Python
在这个示例中,使用plt.fill_between()函数填充了两个数据集之间 sin(x) > cos(x) 的区域,并为填充区域添加了颜色和透明度。添加了图例以标识填充区域。

13.3D数据可视化

三维散点图和曲面图

使用Axes3D子模块来创建三维散点图和曲面图。

三维散点图

python

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建示例数据 x = np.random.rand(100) y = np.random.rand(100) z = np.random.rand(100) # 创建三维散点图 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter(x, y, z, c='b', marker='o', label='随机数据') # 添加标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') # 添加图例 ax.legend() # 显示图表 plt.show()
Python
在这个示例中,使用Axes3D子模块创建了一个三维散点图,其中 xyz 是随机生成的数据。

三维曲面图

python

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建示例数据 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) x, y = np.meshgrid(x, y) z = np.sin(np.sqrt(x**2 + y**2)) # 创建三维曲面图 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.plot_surface(x, y, z, cmap='viridis', label='三维曲面') # 添加标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') # 添加图例 ax.legend() # 显示图表 plt.show()
Python
在这个示例中,用Axes3D子模块创建了一个三维曲面图,其中 xy 是网格化的坐标,z 是一个函数的值。

等高线图和热力图

Matplotlib允许创建三维等高线图和热力图,用于可视化等高线和数据热力分布。

三维等高线图

python

import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np # 创建示例数据 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) x, y = np.meshgrid(x, y) z = np.sin(np.sqrt(x**2 + y**2)) # 创建三维等高线图 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.contour(x, y, z, cmap='viridis', levels=20) # 添加标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') # 显示图表 plt.show()
Python
在这个示例中,用Axes3D子模块创建了一个三维等高线图。

热力图

python

import matplotlib.pyplot as plt import numpy as np # 创建示例数据 data = np.random.rand(10, 10) # 创建热力图 plt.imshow(data, cmap='coolwarm', interpolation='nearest') plt.colorbar() # 显示图表 plt.show()
Python
这个示例演示了如何创建热力图,其中 data 是一个矩阵。

3D 动画和交互式控件

Matplotlib还支持3D动画和交互式控件,允许你创建交互式的三维图形。

14.图形导出和美化

导出图形文件

使用Matplotlib将图形保存为各种文件格式,如PNG、JPG、SVG、PDF等。

python

import matplotlib.pyplot as plt # 创建示例数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 绘制数据 plt.plot(x, y, label='数据集') # 自定义图形 plt.title('导出图形文件示例') plt.xlabel('X轴') plt.ylabel('Y轴') plt.legend() # 保存图形为PNG文件 plt.savefig('sample_plot.png', dpi=300, bbox_inches='tight') # 保存图形为PDF文件 plt.savefig('sample_plot.pdf', bbox_inches='tight') # 显示图表 plt.show()
Python
在这个示例中,用plt.savefig()函数将图形保存为PNG和PDF文件,可以使用不同的文件扩展名来指定不同的文件格式。

图形风格设置

Matplotlib允许设置图形的风格,包括背景、网格线、字体和刻度等。

python

import matplotlib.pyplot as plt # 设置图形风格 plt.style.use('seaborn-darkgrid') # 创建示例数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 绘制数据 plt.plot(x, y, label='数据集') # 自定义图形 plt.title('图形风格设置示例') plt.xlabel('X轴') plt.ylabel('Y轴') plt.legend() # 显示图表 plt.show()
Python
在这个示例中,用plt.style.use()函数设置了图形的风格为seaborn-darkgrid,选择不同的风格来自定义图形外观。

自定义色彩和配色方案

自定义色彩和配色方案,以满足特定的需求。

python

import matplotlib.pyplot as plt # 自定义色彩和配色方案 colors = ['red', 'green', 'blue', 'orange', 'purple'] # 创建示例数据 x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] # 绘制数据,使用自定义色彩 for i in range(len(x)): plt.plot(x[i], y[i], label=f'数据点 {i+1}', color=colors[i]) # 自定义图形 plt.title('自定义色彩和配色方案示例') plt.xlabel('X轴') plt.ylabel('Y轴') plt.legend() # 显示图表 plt.show()
Python
在这个示例中,自定义的颜色列表colors来为每个数据点选择不同的颜色。

参考

解读IMDb电影Top250-电影数据探索python数据分析-numpy
宓翊23
宓翊23
博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉欢迎来到我的博客🎉
工具-资源-技术-随笔
--- 感谢您的支持 ---
👏希望能帮助到您👏
主博客:作者站点中的bevis23
 
 
 
2024-2025 宓翊23.

miyi23 | 博学而笃志,切问而近思~ 爱探索,热爱技术的Geek一枚~

Powered by NotionNext 4.1.5.