holoviews hv.save x ярлык обрезанный (обрезанный) - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь сохранить сюжет holoviews в png, используя боке-боке. Но у сохраненного png есть свой xlabel, частично обрезанный. Как мне увеличить поле для пробелов в нижней части графика, чтобы избежать этого?

Я попытался создать отдельный столбец NdLayout, а затем отредактировать график, но у каждого графика был обрезан xlabel.

При рендеринге в блокноте Jupyter xlabel выглядит как положено.

import numpy as np
import holoviews as hv
hv.extension('bokeh')
a1 = np.random.normal(0,1,size=600)
a2 = np.random.normal(1,1,size=600)
b = np.arange(0,600)
xx = hv.Curve([(ii,jj) for ii,jj in zip(b,a1)],['predicted_sample'],['Value']).relabel('StandardNormal')
yy = hv.Curve([(ii,jj) for ii,jj in zip(b,a2)],['predicted_sample'],['Value']).relabel('ShiftedNormal')
hv.save(xx*yy,"plot.png")

Single: Single plot with trimmed xlabel


hv.save(((xx*yy) + (xx*yy)).cols(1),'ndlayout_plots.png')

NdLayout: NdLayout plot with trimmed xlabel

1 Ответ

0 голосов
/ 02 апреля 2020

Для тех, кто находит это, я нашел обходной путь, используя хуки и непосредственно устанавливая значение bokeh min_border_bottom.

import numpy as np
import holoviews as hv

hv.extension('bokeh')

a1 = np.random.normal(0,1,size=600)
a2 = np.random.normal(1,1,size=600)
b = np.arange(0,600)

xx = hv.Curve([(ii,jj) for ii,jj in zip(b,a1)],['predicted_sample'],['Value']).relabel('StandardNormal')
yy = hv.Curve([(ii,jj) for ii,jj in zip(b,a2)],['predicted_sample'],['Value']).relabel('ShiftedNormal')

pp = xx*yy #create the overlay

def fixBottomMargin(plot,element):
  plot.handles['plot'].min_border_bottom = 100

pp = pp.opts(opts.Curve(hooks=[fixBottomMargin])) #call the hooks on the curve element

hv.save(pp,filename='plot.png')

Информация, найденная при чтении документации bokeh, Стилизация визуальных атрибутов

...