自动调整 Matplotlib 中的 ylim 和 xlim
参考: Automatically Rescale ylim and xlim in Matplotlib
在使用 Matplotlib 进行数据可视化时,经常需要调整图表的 x 轴和 y 轴的显示范围,以更好地展示数据的特点。Matplotlib 提供了多种方式来自动或手动调整轴界限(xlim 和 ylim)。本文将详细介绍如何在 Matplotlib 中自动调整这些轴界限,并提供多个示例代码,帮助读者更有效地使用这些功能。
1. 自动调整轴界限的基本概念
在 Matplotlib 中,轴界限可以通过 set_xlim()
和 set_ylim()
方法手动设置,也可以通过一些自动化的方法来调整。自动调整轴界限意味着根据数据的范围自动设置轴的显示范围,使得图表的显示既不会过于拥挤也不会有太多的空白区域。
示例代码 1:基本的自动调整
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 创建图形
plt.figure()
plt.plot(x, y, label='sin(x) from how2matplotlib.com')
plt.autoscale(enable=True, axis='both', tight=None)
plt.legend()
plt.show()
Output:
2. 使用 autoscale
方法
autoscale
方法是一个非常方便的功能,它可以根据图中的内容自动调整轴的界限。你可以选择只对 x 轴、只对 y 轴或两者同时进行调整。
示例代码 2:只自动调整 x 轴
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x) * 10
# 创建图形
plt.figure()
plt.plot(x, y, label='10 * sin(x) from how2matplotlib.com')
plt.autoscale(enable=True, axis='x', tight=True)
plt.legend()
plt.show()
Output:
示例代码 3:只自动调整 y 轴
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.cos(x)
# 创建图形
plt.figure()
plt.plot(x, y, label='cos(x) from how2matplotlib.com')
plt.autoscale(enable=True, axis='y', tight=True)
plt.legend()
plt.show()
Output:
3. 使用 relim
和 autoscale_view
方法
当你在已有的图形上添加更多的数据点时,可能需要重新计算图形的界限。relim
方法用于更新轴对象的数据界限,而 autoscale_view
根据更新后的数据界限调整轴的视图界限。
示例代码 4:添加数据后重新调整界限
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
y2 = np.cos(x)
# 创建图形
plt.figure()
plt.plot(x, y, label='sin(x) from how2matplotlib.com')
plt.plot(x, y2, label='cos(x) from how2matplotlib.com')
plt.legend()
# 添加数据后重新调整界限
plt.gca().relim()
plt.gca().autoscale_view()
plt.show()
Output:
4. 调整轴界限的高级技巧
有时候,自动调整的界限可能不完全符合我们的需求,这时可以结合手动设置和自动调整的方法来达到最佳的显示效果。
示例代码 5:结合手动设置和自动调整
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x) * 100
# 创建图形
plt.figure()
plt.plot(x, y, label='100 * sin(x) from how2matplotlib.com')
plt.autoscale(enable=True, axis='both', tight=True)
# 手动调整 y 轴的界限
plt.ylim(-120, 120)
plt.legend()
plt.show()
Output:
5. 总结
在本文中,我们详细介绍了如何在 Matplotlib 中自动调整 xlim 和 ylim。通过使用 autoscale
, relim
, 和 autoscale_view
方法,我们可以根据数据的实际分布自动调整图形的显示范围。这些方法提供了灵活的数据可视化工具,可以帮助我们更有效地展示复杂的数据。