【发布时间】:2012-03-16 04:11:56
【问题描述】:
一个附带条件:我的问题的核心语法元素是 Python 语言;然而,这个元素经常出现在 Matplotlib 库中,这是我见过的唯一上下文。所以无论是一般的 Python 语法问题还是特定于库的问题,我都不确定。我所知道的是,我在 Python 语言参考 或 Matplotlib 文档中都找不到任何相关内容。
那些使用和/或使用优秀的 Python 绘图库进行开发的人,Matplotlib 将识别下面的语法模式。 (
from matplotlib import pyplot as MPL
>>> l, = MPL.plot(s, t) # s & t are ordinary NumPy 1D arrays
这个表达式左边的结构是什么? 而且,
使用它的目的是什么?
我熟悉 Python 的赋值解包,例如,
>>> a, b = [100, 200]
我也知道在 Python 中,单项 元组 有时表示为 t,
两者都可能是上述第一个问题的答案;如果是这样,那么我还不明白为什么这里只需要从调用 plot 返回的值的第一个元素。
(注意:“l”是小写的“ell”;我使用这个字母是因为 ls 是这里最常用的字母,可能是因为它绑定到以相同字母开头的对象——见下文) .
一些额外的上下文:
对 plot 的调用返回 line2D 实例的列表:
>>> type(l)
<class 'matplotlib.lines.Line2D'>
所以 l 是 line2D 类型的对象。
一旦绑定到 lines2D 对象,这个“变量”通常会在 Matplotlib 代码中看到,如下所示:
>>> l.set_color("orange")
此表达式更改表示绘图窗口内数据值的线条的颜色(“绘图线”)
下面是另一个例子;它显示了这种“变量逗号”构造的常见场景,即在 Matplotlib 绘图窗口中嵌入小型工具包/图形后端独立小部件,例如,通过复选框打开/关闭,多个数据系列出现在绘图窗口中.
在下面的代码中,创建了一个简单的 Matplotlib 图和一个由两个复选框组成的简单小部件,每个复选框一个用于每个数据系列。
l0 和 l1 再次绑定到对 plot 的调用;当他们的 get_visible 和 set_visible 方法在调用 *on_click* 时传入的自定义函数中调用时,两者都会出现几个留置权。
from matplotlib.widgets import CheckButtons
ax = plt.subplot(111)
l0, = ax.plot(s, t, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
rax = plt.axes( [.05, .4, .1, .15] )
check = CheckButtons(rax, ('raw', 'transformed'), (False, True))
def fnx(checkbox_label):
if checkbox_label == 'raw':
l0.set_visible(not l0.get_visible())
elif checkbox_label == 'transformed':
l1.set_visible(not l1.get_visible())
check.on_clicked(fnx)
plt.show()
【问题讨论】:
-
为了说明为什么
plot返回一个序列,plot是根据 matlab 的绘图建模的,因此它接受任意数量的线来使用单个函数调用进行绘图. (例如,您可以执行plt.plot(x, 1*x, x, 2*x, x, 3*x, x, 4*x)之类的操作并绘制 4 行,或者传入 2d 数组并为每一行获取一行)因此,plot始终返回一个序列,即使只有一行。用plot一次绘制多条线实际上是相当罕见的,所以你经常看到l, = plt.plot(x, y)。 -
frequently used in Matplotlib你能链接到文档中的示例吗?
标签: python syntax reference matplotlib