自动调整 Matplotlib 中的 ylim 和 xlim

自动调整 Matplotlib 中的 ylim 和 xlim

参考: Automatically Rescale ylim and xlim in Matplotlib

在数据可视化过程中,合理设置图表的 x 轴和 y 轴的显示范围(即 xlim 和 ylim)是非常重要的。Matplotlib 提供了多种方式来自动或手动调整这些范围,以便更好地展示数据的特征。本文将详细介绍如何在 Matplotlib 中自动调整 ylim 和 xlim,包括基本概念、应用场景以及具体的代码实现。

基本概念

在 Matplotlib 中,xlimylim 属性用于控制图表的水平和垂直显示范围。这两个属性可以是自动设置的,也可以手动指定。自动设置意味着 Matplotlib 会根据提供的数据自动选择最佳的显示范围。

自动调整的优势

  • 数据适应性:自动调整可以确保所有的数据点都能被有效展示,不会有数据点因为超出设定范围而无法显示。
  • 快速调整:在数据更新或变化时,自动调整能够快速反应,省去了手动调整的麻烦。
  • 适用性广:适用于多种类型的数据和不同的数据规模。

示例代码

接下来,我们将通过一系列示例代码来展示如何在 Matplotlib 中自动调整 ylim 和 xlim。

示例 1:基本的自动调整

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.plot(data)
plt.title("自动调整示例 - how2matplotlib.com")
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

示例 2:比较自动调整和非自动调整

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.figure(figsize=(10, 5))

plt.subplot(121)
plt.plot(data)
plt.title("自动调整 - how2matplotlib.com")

plt.subplot(122)
plt.plot(data)
plt.xlim(0, 50)  # 手动设置xlim
plt.ylim(-3, 3)  # 手动设置ylim
plt.title("手动调整 - how2matplotlib.com")

plt.tight_layout()
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

示例 3:使用relimautoscale_view

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.plot(data)
plt.title("调整前 - how2matplotlib.com")
plt.show()

plt.plot(data)
plt.relim()  # 重新计算限制
plt.autoscale_view()  # 根据数据更新视图
plt.title("调整后 - how2matplotlib.com")
plt.show()

示例 4:动态添加数据点

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
data = np.random.randn(100)
line, = ax.plot(data)

for i in range(100, 200):
    new_data = np.random.randn(1)
    data = np.append(data, new_data)
    line.set_ydata(data)
    ax.relim()
    ax.autoscale_view()
    plt.pause(0.05)

plt.title("动态数据调整 - how2matplotlib.com")
plt.show()

示例 5:结合使用 xlim 和 ylim

import matplotlib.pyplot as plt
import numpy as np

data_x = np.linspace(0, 10, 100)
data_y = np.sin(data_x)

plt.plot(data_x, data_y)
plt.xlim(0, 5)  # 部分自动,部分手动
plt.ylim(auto=True)
plt.title("混合调整 - how2matplotlib.com")
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

示例 6:多子图自动调整

import matplotlib.pyplot as plt
import numpy as np

data1 = np.random.randn(100).cumsum()
data2 = np.random.randn(100).cumsum()

fig, axs = plt.subplots(2, 1, sharex=True)
axs[0].plot(data1)
axs[1].plot(data2)

plt.title("多子图自动调整 - how2matplotlib.com")
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

示例 7:使用set_xlimset_ylim

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100).cumsum()

plt.plot(data)
plt.gca().set_xlim(left=20, right=80)  # 设置特定的范围
plt.gca().set_ylim(bottom=-20, top=20)
plt.title("设置特定范围 - how2matplotlib.com")
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

示例 8:更新数据后重新调整

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.plot(data)
plt.title("更新前 - how2matplotlib.com")
plt.show()

# 更新数据
data = np.random.randn(100) * 20
plt.plot(data)
plt.relim()
plt.autoscale_view()
plt.title("更新后 - how2matplotlib.com")
plt.show()

示例 9:使用tight_layout自动调整布局

import matplotlib.pyplot asplt
import numpy as np

data = np.random.randn(100)
plt.plot(data)
plt.tight_layout()
plt.title("使用 tight_layout - how2matplotlib.com")
plt.show()

示例 10:设置不同的自动调整策略

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(100)
plt.plot(data)
plt.autoscale(enable=True, axis='x', tight=True)
plt.title("自动调整策略 - how2matplotlib.com")
plt.show()

Output:

自动调整 Matplotlib 中的 ylim 和 xlim

以上示例展示了在不同情况下如何使用 Matplotlib 的自动调整功能。通过这些示例,可以看出自动调整 xlim 和 ylim 是一个非常实用的功能,它可以帮助我们更好地展示数据,使图表更加清晰和易于理解。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程