Arviz 和 Bokeh:尝试使用后端 kwargs 更改情节的标题

Arviz and Bokeh: Trying to change the title of the plot using backend kwargs

我正在尝试更改我使用 Arviz 创建的绘图的标题。通常我使用 backend_kwargs 完成此操作,但它似乎不适用于某些地块:在这种情况下 plot_density.

这是我正在使用的代码:

kwg = dict(title="prior_1", height=500)
plot = az.plot_density(
                   data_m[0], 
                   group='posterior', 
                   var_names='switchpoint', 
                   backend='bokeh',
                   shade=.5, 
                   backend_kwargs=kwg
                   )

它识别出 kwargs 中的高度变化,所以它不像没有注意到它们在那里。

我也尝试过其他变体,例如 plot_title=,它会产生一个错误,指定它需要 title=

ArviZ 初始化 Bokeh Plot instances using the alias figure。如您所见,阅读 Plot 上的文档,title 是一个有效的论点。然而,出于多种原因,ArviZ 在创建绘图时不使用此参数,而是在之后设置标题。因此,您的论点正在被识别并仅用于被覆盖。

plot_density 将每个图的标题设置为变量名称,如果是多维的,则设置其坐标。而且,除了多个变量(每个变量都可以是多维的),它还支持同时绘制多个模型(因此不同 InferenceData objects)。您可以使用参数 data_labels 来设置图例标签。在 ArviZ's example gallery 中可以看到这方面的示例,您甚至可以单击图例隐藏模型。

因此,要达到预期效果,您必须在调用 plot_density 后手动修改标题,这可以通过多加几行来完成。您必须用 show=False 调用 plot_density,以便之后可以修改图形。然后可以从 plot_density.

返回的数组中存储的元素编辑标题
kwg = dict(height=500)
axes = az.plot_density(
    data_m[0],
    group="posterior",
    var_names="switchpoint",
    backend="bokeh",
    shade=0.5,
    backend_kwargs=kwg,
    show=False
)
axes[0,0].title.text = "prior_1"
az.plots.backends.show_layout(axes)

如果您有多个包含多个多维变量的绘图,则必须通过遍历数组来编辑每个变量的标题。