有一件事我不理解Bokeh
(我认为Matplotlib
有类似行为):
似乎如果函数对figure
执行操作,那么figure
是作为参数传递还是返回并不重要。当地/全球范围障碍似乎不适用。
例如:
p = figure(plot_width=400, height=400)
d= pd.DataFrame(np.random.rand(10,2), columns = ['x', 'y'])
def add_circles():
p.circle(x=d['x'], y=d['y'], color='black', size=5)
add_circles()
show(p)
这段代码将显示在图表上呈现的圆圈,而它们是在函数add_cirles
内创建的,不会返回。另外,数字p
和DataFrame d
都没有传递给函数。
为什么会这样?
在这种情况下,最佳做法是什么?在参数中传递/返回figure
并返回语句,或者让它如上所示?
答案 0 :(得分:2)
这不是散景或matplotlib特有的。 由于您在函数中使用了函数,因此无需返回/传递任何内容。如果p = figure(),只要你执行p.circle(),它就会将glyphrenderer添加到该数字中。
它的行为类似于
a=3
b=[]
def test():
b.append(a)
test()
b
它适用于函数append,但不适用于+ =
a=3
b=[]
def test():
b+=[a]
test()
b
你不需要返回任何东西,因为你的函数add_circles()正在做任何.circle()正在做的事情。并且您不需要传递p,因为函数已经知道在外部声明的变量:
a = 5
def test():
c = a + 2
print c
test()
这只是一种不好的做法,因为你编写了一个在使用特定变量名时应该是通用/可重用的函数。