笔记
单击此处 下载完整的示例代码
Pythonic Matplotlib #
有些人更喜欢编写更“Pythonic”的、显式的面向对象代码,而不是使用 Matplotlib 的隐式 pyplot 接口。此示例向您展示如何利用显式 Matplotlib 接口。
除非您是应用程序开发人员,否则我建议使用 pyplot 界面的一部分,尤其是 figure、close、subplot、axes 和 show 命令。这些隐藏了很多在正常图形创建中不需要看到的复杂性,例如实例化 DPI 实例、管理图形元素的边界框、创建和实现 GUI 窗口以及在其中嵌入图形。
如果您是应用程序开发人员并希望在您的应用程序中嵌入 Matplotlib,请遵循示例/embedding_in_wx.py、examples/embedding_in_gtk.py 或示例/embedding_in_tk.py 的引导。在这种情况下,您需要控制所有图形的创建,将它们嵌入应用程序窗口等。
如果您是 Web 应用程序开发人员,您可能希望使用 webapp_demo.py 中的示例,该示例显示了如何直接使用后端 agg 图形画布,而 pyplot 中不存在任何全局变量(当前图形、当前轴)界面。请注意,pyplot 界面没有理由不适用于 Web 应用程序开发人员。
如果您在示例目录中看到一个用 pyplot 接口编写的示例,并且您想使用真正的 Python 方法调用来模拟该示例,则可以进行简单的映射。其中许多示例使用“设置”来控制图形属性。以下是如何将这些命令映射到实例方法
集合的语法是:
plt.setp(object or sequence, somestring, attribute)
如果使用对象调用,则设置调用:
object.set_somestring(attribute)
如果使用序列调用,set 会:
for object in sequence:
object.set_somestring(attribute)
因此,对于您的示例,如果 a 是您的轴对象,您可以执行以下操作:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_xticks([])
a.set_yticks([])
import matplotlib.pyplot as plt
import numpy as np
t = np.arange(0.0, 1.0, 0.01)
fig, (ax1, ax2) = plt.subplots(2)
ax1.plot(t, np.sin(2*np.pi * t))
ax1.grid(True)
ax1.set_ylim((-2, 2))
ax1.set_ylabel('1 Hz')
ax1.set_title('A sine wave or two')
ax1.xaxis.set_tick_params(labelcolor='r')
ax2.plot(t, np.sin(2 * 2*np.pi * t))
ax2.grid(True)
ax2.set_ylim((-2, 2))
l = ax2.set_xlabel('Hi mom')
l.set_color('g')
l.set_fontsize('large')
plt.show()