2017-01-19 11 views
1

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

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

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

Current Holoview y-ticks

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

Есть ли способ сделать это и что это такое?

+0

Можете ли вы сами форматировать номера и использовать полученные строки как метки? – martineau

ответ

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 черчения класса, который позволит вам получить доступ к различным Plotting объектов на его handles атрибут. Ручки содержат различные важные сюжетные объекты, например ключевое слово 'axis' соответствует объекту matplotlib Axes, но между прочим вы также можете получить доступ и изменить фигуру с помощью 'fig' и Artist с использованием 'artist'.