Как управлять форматом y-tick Holoviews?

Я пытаюсь получить контроль над кривой Holoviews (хотя это должно работать для любого другого элемента графика) и установить метки y-tick в научных обозначениях.

В MatPlotLib я бы сделал это с помощью ticklabel_format(style='sci', axis='y', scilimits=(0,0)).

В настоящее время у меня есть это:

Текущие галочки Holoview

Но хотелось бы, чтобы числа по оси Y были в научных обозначениях вместо длинных десятичных чисел, которые в настоящее время отображаются на оси Y.

Можно ли как-то это сделать и что это?


person SKArm    schedule 19.01.2017    source источник
comment
Можете ли вы сами отформатировать числа и использовать полученные строки в качестве меток?   -  person martineau    schedule 20.01.2017


Ответы (1)


HoloViews позволяет вам указать средство форматирования тиков непосредственно в измерении, поэтому вы можете сделать что-то вроде этого:

from matplotlib.ticker import ScalarFormatter
yfmt = ScalarFormatter()
yfmt.set_powerlimits((0,0))
yfmt.set_scientific(True)
hv.Curve(np.random.rand(10), vdims=[hv.Dimension('y', value_format=yfmt)])

Если вы когда-нибудь найдете параметры, которыми вы не можете управлять напрямую, вы всегда можете прикрепить крючки к своему элементу, которые дадут вам прямой контроль над объектом построения, например:

def sciticks(plot, element):
    plot.handles['axis'].ticklabel_format(style='sci', axis='y', scilimits=(0,0))

hv.Curve(np.random.rand(10,2))(plot=dict(final_hooks=[sciticks])) 

Аргумент plot функции обратного вызова — это класс построения графиков HoloViews, который позволит вам получить доступ к различным объектам построения графиков по его атрибуту handles. Дескрипторы содержат различные важные объекты графика, например, ключевое слово 'axis' соответствует объекту matplotlib Axes, но среди прочего вы также можете получить доступ и изменить рисунок, используя 'fig', и Artist, используя 'artist'.

person philippjfr    schedule 19.01.2017