共享轴范围 - 散景

Sharing axis ranges - Bokeh

我想分享我的 X-axis 的范围,这样当我平移我的地块时,所有的地块都会一起移动。

我正在尝试遵循 Guide Line 中的示例。但是因为我以不同的方式绘制它们,所以不允许我共享范围。

p = [figure(title="Title", 
            x_axis_label='Time (secs)', 
            y_axis_label='Voltage (V)', 
            tools = TOOLS, 
            x_range=(0, 500), 
            y_range=(0, 1000)),

    figure(title="Title_1", 
           x_axis_label='Time (secs)', 
           y_axis_label='Voltage (V)',  
           tools = TOOLS,
           x_range=p[0].x_range, 
           y_range=(0, 500))]

我得到以下信息:

   x_range=p[0].x_range,

IndexError: list index out of range

这是怎么回事?

您定义了一个列表,其中一个元素引用了它的第一个索引。 您不能在定义中引用元素的索引。

例如:

class Person:
    def __init__(self, name):
        self.name = name

list1 = ['first', Person(list1[0])]

并在您的代码段中:

p = [figure(title="Title", 
            x_axis_label='Time (secs)', 
            y_axis_label='Voltage (V)', 
            tools = TOOLS, 
            x_range=(0, 500), 
            y_range=(0, 1000)),

    figure(title="Title_1", 
           x_axis_label='Time (secs)', 
           y_axis_label='Voltage (V)',  
           tools = TOOLS,
           x_range=p[0].x_range, # Here is problem you the p[0] is refering 
                                 #  to index 0 on definition of the list 
           y_range=(0, 500))]

您可以按照以下目的进行操作:

p = [
    figure(
        title="Title", 
        x_axis_label='Time (secs)', 
        y_axis_label='Voltage (V)', 
        tools = TOOLS, 
        x_range=(0, 500), 
        y_range=(0, 1000)
    )
]
p.append(
    figure(
       title="Title_1", 
       x_axis_label='Time (secs)', 
       y_axis_label='Voltage (V)',  
       tools = TOOLS,
       x_range=p[0].x_range,
       y_range=(0, 500)
    )
)

您可以在创建之后而不是在创建期间更改范围:

p[1].x_range = p[0].x_range