【问题标题】:Swap axes after plot object created in bokeh在散景中创建绘图对象后交换轴
【发布时间】:2019-06-11 03:48:43
【问题描述】:

在使用 Bokeh 创建绘图对象后,我需要交换绘图的 x 轴和 y 轴。我尝试按如下方式执行此操作,但收到以下 javascript 错误:

Javascript 错误:无法读取未定义的属性“长度”

我认为这可能是因为这种散景issue 与相关的PRgist

我想知道我在这里缺少什么(或不理解)才能让它发挥作用。

import bokeh.plotting
import bokeh.io

def swap_axes(plot):
    old_x_axis, old_y_axis = plot.below[0], plot.left[0]
    old_x_range, old_y_range = plot.x_range, plot.y_range
    old_x_scale, old_y_scale = plot.x_scale, plot.y_scale

    plot.below = []
    plot.left = []
    plot.add_layout(old_y_axis, 'below')
    plot.add_layout(old_x_axis, 'left')

    plot.x_range, plot.y_range = old_y_range, old_x_range
    plot.x_scale, plot.y_scale = old_y_scale, old_x_scale
    plot.center = plot.center[::-1]

    return plot


fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']
counts = [5, 3, 4, 2, 4, 6]

p = bokeh.plotting.figure(x_range=fruits, plot_height=250, title="Fruit Counts",
                          toolbar_location=None, tools="")
p.vbar(x=fruits, top=counts, width=0.9)

bokeh.io.show(p)
bokeh.io.show(swap_axes(p))

【问题讨论】:

    标签: python plot bokeh axes


    【解决方案1】:

    不清楚为什么您会需要在 Bokeh 服务器应用程序之外以这种方式更新绘图,这实际上使实时对象在 Python/JS 运行时保持同步。在独立的 HTML 输出中,实际上没有重要的方法可以将一个用于两个单独文件的绘图与用于生成两个单独文件的两个绘图区分开来。

    无论如何,这种特殊的重新排列方式对于散景效果来说尤其麻烦,因为需要正确洗牌的部分非常多。除了上面的内容之外,轴的代码也驱动网格,这些都需要修复。这一行:plot.center = plot.center[::-1] 没有任何用处(它不会改变网格的配置方式,只会改变它们的绘制顺序)。可能还有其他需要交换的东西。

    这是一项不平凡的任务,而且在大约 6 年内基本上没有人提出要求,因此我们没有投入任何非常有限的项目资源来简化它。作为主要核心开发人员之一,我的建议是,您应该创建一个函数,该函数可以根据标志参数返回两个版本的图,并显示两个单独的图:

    show(make_plot(swapped=False))
    show(make_plot(swapped=True))
    

    还有:

    但只是得到一个 javascript 错误。

    为了将来参考,如果有错误消息,它应该总是,总是,总是包含在问题中。

    【讨论】:

    • 好的,谢谢。我认为这可能是因为issue 和相关的PRgist,但很高兴知道它不是。
    • 嗯,Scale 当时不存在,因此该代码已过时,并且对于任何最新版本都不完整。我并不是说不可能进行轴交换,我只是说它几乎可以肯定比它的价值更麻烦,至少现在是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2017-05-25
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    相关资源
    最近更新 更多