我试图改变我与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=。
发布于 2020-08-05 20:36:46
ArviZ使用别名图初始化Bokeh 绘图实例。正如您可以看到在Plot上读取文档一样,title是一个有效的参数。但是,由于几个原因,ArviZ在创建情节时不使用此参数,而是在创建之后设置标题。因此,你的论点正在被认可,并且只会被改写。
plot_density将每个图的标题设置为变量名,如果是多维的,则设置其坐标。此外,除了多个变量(每个变量都可以是多维的)之外,它还支持同时绘制多个模型(因此不同的InferenceData对象)。可以使用参数data_labels设置图例标签。这方面的一个例子可以在ArviZ示例库中看到,您甚至可以单击图例来隐藏模型。
因此,要达到预期的结果,您必须在调用plot_density之后手动修改标题,这可以通过几行额外的行来完成。您必须用plot_density调用show=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)如果有多个包含多个多维变量的图,则必须通过遍历数组来编辑每个图的标题。
https://stackoverflow.com/questions/63156647
复制相似问题