【问题标题】:How do I find the value of a bokeh line glyph如何找到散景线字形的值
【发布时间】:2022-10-17 14:57:00
【问题描述】:

我正在尝试构建一个应用程序,我需要在其中提取散景线的 x、y 值。我能够为散景圆圈执行此操作(见下文,我发现圆圈的 x 值为 tmp1.glyph.x = 2),但相同的语法不适用于两点之间的线(tmp1.glyph.x =“x”)。我希望看到[-3,3]。将不胜感激任何建议。

from bokeh.plotting import figure,  show


fig = figure(x_range=(-5,5),y_range=(-5, 5))
tmp1=fig.circle(x=2, y=-3, size=5)
tmp=fig.line(x = [-3,3], y = [4,-4])
print(tmp1.glyph.x)
# output: 2
print(tmp.glyph.x)
# output: x

show(fig)

【问题讨论】:

    标签: python-3.x bokeh


    【解决方案1】:

    对于line 字形,会创建一个ColumnDataSource 对象。要打印此 ColumnDataSource 的数据,请在您的示例中使用 tmp.data_source.data['x']

    为了更详细地解释这种行为,你必须知道,如果你只为一个字形传递xy 的一个值,这个值将直接存储为值(对象内部看起来像这样:@987654327 @)。如果您将一个列表传递给字形,则会得到一个指针,该指针带有ColumnDataSource 中的列名(在里面它看起来像这样x = {'field': 'x'})。 circle 字形具有相同的行为,您可以尝试将一个值添加为列表。

    因此,打印值的通用解决方案可能如下面的代码所示:

    value = tmp.glyph.x
    if isinstance(field_or_value, str):
        value = tmp1.data_source.data[value]
    print(value)
    

    这里我们检查tmp.glyph.x 中的值是否为字符串。如果它是一个字符串,这是一个指针ColumnDataSource

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 2022-12-11
      相关资源
      最近更新 更多