Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matplotlib中经常使用的一个不寻常的Python语法元素_Python_Syntax_Reference_Matplotlib - Fatal编程技术网

Matplotlib中经常使用的一个不寻常的Python语法元素

Matplotlib中经常使用的一个不寻常的Python语法元素,python,syntax,reference,matplotlib,Python,Syntax,Reference,Matplotlib,一个附带条件:我问题的核心语法元素是Python语言;但是,该元素经常出现在Matplotlib库中,这是我见过的唯一上下文。所以,无论是一般的Python语法问题还是特定于库的问题,我都不确定。我所知道的是,我在Python语言参考或Matplotlib文档中找不到任何相关内容 使用和/或使用优秀的Python绘图库Matplotlib进行开发的人将认识到下面的语法模式。( 此表达式左侧的结构是什么?以及 使用它的目的是什么? 我熟悉Python的任务解包,例如 >>> a,

一个附带条件:我问题的核心语法元素是Python语言;但是,该元素经常出现在Matplotlib库中,这是我见过的唯一上下文。所以,无论是一般的Python语法问题还是特定于库的问题,我都不确定。我所知道的是,我在Python语言参考或Matplotlib文档中找不到任何相关内容

使用和/或使用优秀的Python绘图库Matplotlib进行开发的人将认识到下面的语法模式。(

此表达式左侧的结构是什么?以及

使用它的目的是什么?

我熟悉Python的任务解包,例如

>>> a, b = [100, 200]
我还知道,在Python中,一项元组有时表示为t

这两个都可能是上面第一个问题的答案;如果是这样,那么我还不明白为什么这里只需要调用plot返回的值的第一个元素

(注意:“l”是小写的“ell”;我之所以使用这个字母,是因为ls是这里最常用的字母,可能是因为它绑定到一个以同一个字母开头的对象,请参见下文)


其他一些背景:

调用plot将返回line2D实例列表:

>>> type(l)
  <class 'matplotlib.lines.Line2D'>
此表达式更改表示打印窗口内数据值的线的颜色(“打印线”)

下面是另一个示例;它显示了这种“变量逗号”构造的常见场景,即在Matplotlib绘图窗口中嵌入与工具箱/图形后端无关的小部件,例如,要通过复选框打开/关闭,绘图窗口中会出现多个数据系列

在下面的代码中,创建了一个简单的Matplotlib绘图和一个由两个复选框组成的简单小部件,每个数据系列对应一个复选框

l0l1再次绑定到plot调用;当调用*on_click*时传入的自定义函数中调用了它们的get_visible和set_visible方法时,这两个方法都会在几天后出现

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()
它是针对单个元素的

>>> l = [3]
>>> v, = l
>>> v
3
与……几乎一样吗

[l] = v
范例

>>> l=[3]
>>> [v] = l
>>> v
3
>>>
一些解释:

我们知道

a,b=1,2
给出
a==1,b==2

在我看来,如果python发现左侧是一个“元组”,它会将右侧解包

a,=[1]
python可能认为它是
(a,)=[1]


然后尝试解压它,这样我们就得到
a==1

来解释为什么
plot
返回一个序列,
plot
是根据matlab的plot建模的,所以它接受任意数量的行来用一个函数调用进行绘图。(例如,你可以做
plt.plot(x,1*x,x,2*x,x,3*x,x,4*x)
并绘制4行,或在2d数组中传递并为每行获取一行)因此,
plot
始终返回一个序列,即使只有一行。实际上,使用
plot
一次绘制多行是相当罕见的,因此您经常会看到
l,=plt.plot(x,y)
在Matplotlib中经常使用
您可以链接到文档中的示例吗?例如
l, = v
[l] = v
>>> l=[3]
>>> [v] = l
>>> v
3
>>>