1

我正在尝试更改我正在使用 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=

4

1 回答 1

0

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

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

因此,要达到预期的效果,您必须在调用后手动修改标题plot_density,这可以通过多行几行来完成。您必须调用plot_densitywithshow=False以便之后可以修改该数字。然后可以从存储在由返回的数组中的元素编辑标题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)

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

于 2020-08-05T20:36:46.317 回答