matplotlib 入门到入土

matplotlib 入门到入土

基础篇

Matplotlib是一个Python 2D绘图库,可以生成各种硬拷贝格式和跨平台的交互环境。下面是一些Matplotlib的基础使用教程。

1. 导入matplotlib库

import matplotlib.pyplot as plt

2. 绘制简单的图形

2.1 线性图
import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()

这将生成一个简单的线性图,这里我们只指定了y轴的值,x轴的值默认为索引值。

2.2 散点图
import matplotlib.pyplot as plt

plt.scatter([1, 2, 3, 4, 5], [2, 3, 5, 7, 11])
plt.show()

这将生成一个简单的散点图,指定了x和y的值。

3. 自定义图形

3.1 改变颜色和线型
import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.show()

在这里,‘ro’是一个字符串,表示’r’(红色)和’o’(圆圈标记)。

3.2 设置坐标轴范围
import matplotlib.pyplot as plt

plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
plt.axis([0, 6, 0, 20])
plt.show()

在这里,axis方法接受一个列表,表示[xmin, xmax, ymin, ymax]。

4. 使用numpy数组

Matplotlib接受numpy数组作为输入,实际上这是它的标准输入类型。

import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.show()

这里我们生成了三个不同的图形在一个图上,使用了numpy数组和不同的颜色和标记。

5. 创建子图

import numpy as np
import matplotlib.pyplot as plt

# Some example data to display
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

fig, axs = plt.subplots(2)
fig.suptitle('Vertically stacked subplots')
axs[0].plot(x, y)
axs[1].plot(x, -y)

plt.show()

使用subplots函数可以创建一个或多个子图。

以上是matplotlib的一些基础内容。你可以通过matplotlib官方文档或其他教程进一步学习更多内容,例如多维数据的可视化,复杂布局的创建等等。

进阶篇

当然,让我们深入一些更高级的用法,包括样式管理、颜色条、3D绘图、动画等。

1. 样式管理

Matplotlib有一套预定义好的样式供我们使用,也可以自定义样式。以下是如何改变样式的例子:

import matplotlib.pyplot as plt
import numpy as np

plt.style.use('ggplot') # 使用'ggplot'样式
x = np.linspace(0, 10, 100)
y = np.cos(x)
plt.plot(x, y)
plt.show()

2. 颜色条

颜色条对于一些带有颜色映射的图表非常有用。例如,我们绘制一个heatmap,然后添加一个颜色条:

import numpy as np
import matplotlib.pyplot as plt

# Generate some data
x = np.random.rand(10, 10)

# Generate a heatmap
plt.imshow(x, cmap='hot', interpolation='nearest')

# Add a colorbar
plt.colorbar()

plt.show()

3. 3D绘图

Matplotlib支持3D绘图。要创建一个3D图形,我们首先需要创建一个3D轴,然后在该轴上进行绘图。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# Generate some 3D sample data
x = np.random.standard_normal(100)
y = np.random.standard_normal(100)
z = np.random.standard_normal(100)

# Create a 3D scatter plot
ax.scatter(x, y, z)

plt.show()

4. 动画

Matplotlib还支持生成动画。这是一个简单的例子:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'r-')

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                    init_func=init, blit=True)

plt.show()

以上就是一些matplotlib的高级用法,您可以查看matplotlib的官方文档,获取更多详细的信息和更多的示例。

大师篇

Matplotlib是一个非常强大的库,可用于创建各种复杂的图形和可视化。让我们探索一些更高级的特性,如多坐标轴图、自定义标注和图例,以及使用gridspec自定义subplot布局。

1. 多坐标轴图

在一个图中创建多个y轴是可能的。这在你想要在同一个图中表示具有不同尺度的数据时很有用。

import numpy as np
import matplotlib.pyplot as plt

fig, ax1 = plt.subplots()

t = np.arange(0.01, 10.0, 0.01)
s1 = np.exp(t)
ax1.plot(t, s1, 'b-')
ax1.set_xlabel('time (s)')

# Make the y-axis label and tick labels match the line color.
ax1.set_ylabel('exp', color='b')
for tl in ax1.get_yticklabels():
    tl.set_color('b')

ax2 = ax1.twinx()
s2 = np.sin(2*np.pi*t)
ax2.plot(t, s2, 'r.')
ax2.set_ylabel('sin', color='r')
for tl in ax2.get_yticklabels():
    tl.set_color('r')

plt.show()

2. 自定义标注和图例

你可以在图上添加文本,箭头,以及其他类型的标注。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)

ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

ax.set_ylim(-2,2)
plt.show()

3. 使用gridspec自定义subplot布局

使用gridspec模块,你可以更加精细地控制subplot的布局。

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

fig = plt.figure()

gs = gridspec.GridSpec(3, 3)

ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[-1, 0])
ax5 = plt.subplot(gs[-1, -2])

fig.tight_layout()
plt.show()

在上述代码中,我们创建了一个3x3的grid,然后放置了五个subplots。注意gs[i, j]是使用基于0的索引。

这些只是Matplotlib高级功能的一部分,为了充分利用这个库,最好参阅Matplotlib的官方文档,它提供了大量的教程和例子。

探索篇

好的,以下是一些更深入的Matplotlib用法,涵盖了绘制复杂的图像,如填充区域、绘制误差条、定制的图像标注等。

1. 绘制并填充区域

你可以使用fill_between函数在两条线之间填充区域。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 500)
y = np.sin(4 * np.pi * x) * np.exp(-5 * x)

fig, ax = plt.subplots()

ax.fill(x, y, zorder=10)
ax.grid(True, zorder=5)
plt.show()

2. 绘制误差条

当你的数据有误差范围时,可以使用误差条来显示这些信息。

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 10, 50)
dy = 0.8
y = np.sin(x) + dy * np.random.randn(50)

plt.errorbar(x, y, yerr=dy, fmt='.k')
plt.show()

3. 定制图像标注

你可以使用text函数在图像上添加自定义标注。这个函数有很多选项来调整文本的外观,包括字体大小、文本框样式等。

import numpy as np
import matplotlib.pyplot as plt

ax = plt.subplot(111)

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2*np.pi*t)
line, = ax.plot(t, s, lw=2)

ax.annotate('local max', xy=(2, 1), xytext=(3, 1.5),
            arrowprops=dict(facecolor='black', shrink=0.05),
            )

ax.text(0.95, 0.01, 'colored text in axes coords',
        verticalalignment='bottom', horizontalalignment='right',
        transform=ax.transAxes,
        color='green', fontsize=15)

plt.show()

4. 高级三维图像

你可以创建更复杂的三维图像,例如曲面图。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))

ax.plot_surface(x, y, z, color='b')

plt.show()

以上只是一些例子,Matplotlib的功能远不止这些,可以查看Matplotlib的官方文档来获取更详细的信息和教程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你是初学者并想学习 Matplotlib,下面是一些入门步骤: 1. 安装 Matplotlib:在你的 Python 环境中安装 Matplotlib 。可以使用 pip 命令在终端或命令提示符中执行以下命令:`pip install matplotlib` 2. 导入 Matplotlib:在 Python 脚本或交互式环境中导入 Matplotlib。通常,我们使用 `import matplotlib.pyplot as plt` 将其导入,并将其简称为 `plt`,以便更方便地调用函数。 3. 创建基本图形:使用 Matplotlib 绘制图形的第一步是创建一个图形对象(Figure)和一个或多个子图(Axes)。可以使用 `plt.figure()` 创建一个新的图形对象,并使用 `figure.add_subplot()` 方法创建子图。也可以使用 `plt.subplots()` 一次创建多个子图。 4. 绘制图形:使用子图对象的方法,如 `ax.plot()`、`ax.scatter()`、`ax.bar()` 等来绘制相应的图形。可以根据需要传递数据和其他参数来自定义图形的样式和属性。 5. 自定义图形:Matplotlib 提供了很多方法和选项来自定义图形的样式、颜色、标签、标题、坐标轴、图例等。你可以通过修改子图对象的属性或调用相应的方法来进行自定义。 6. 显示图形:使用 `plt.show()` 方法显示绘制的图形。这将打开一个新的窗口或在 Jupyter Notebook 中嵌入图形。 7. 保存图形:如果你想将图形保存到文件中,可以使用 `plt.savefig()` 方法提供保存路径和文件名,指定图形的格式(如 PNG、JPEG、SVG 等)。 这些是 Matplotlib 的基本入门步骤,你可以从这里开始尝试绘制简单的图形,并逐渐学习更高级的用法和功能。同时,官方文档和在线教程也是学习 Matplotlib 的好资源。祝你学习愉快!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值