Как скрыть / удалить только ось, не удаляя метки оси в головиде

Когда я добавляю in... .opts(title="Graph",ylabel="Count",width=400,axiswise=True,xaxis='bare') xasis='bare' или xaxis=none, вся ось исчезает вместе с метками в holoviews. Как удалить только ось при отображении axis меток? Здесь метка обозначается как ylabel, поскольку ось перевернута. ylabel устанавливает ярлык для xaxis

Обратитесь к здесь для примера кода графика

Также есть способ дать основной заголовок для параллельных сюжетов, помимо отдельных заголовков сюжетов в головокружениях.


person Scope    schedule 12.10.2020    source источник
comment
Что вы подразумеваете под удалением оси? Вы имеете в виду убрать галочки, сохранив текстовые метки? Или удаление осевой линии? Или...?   -  person James A. Bednar    schedule 12.10.2020
comment
Удаление axis строки, а также tick marks при сохранении этикеток   -  person Scope    schedule 13.10.2020


Ответы (1)


Для этого вам нужно будет погрузиться в боке. Вы можете сделать это либо с помощью крючка, либо визуализировать объект боке и работать с ним напрямую:

Подход крюка:

import holoviews as hv
hv.extension("bokeh")

def hook(plot, element):
    plot.state.xaxis.major_tick_line_color = None        # turn off x-axis major ticks
    plot.state.xaxis.minor_tick_line_color = None        # turn off x-axis minor ticks
    plot.state.xaxis.major_label_text_font_size = '0pt'  # turn off x-axis tick labels


df = pd.DataFrame({
    "set": list("ABABCCAD"),
    "flag": list("YYNNNYNY"),
    "id": list("DEFGHIJK"),
})

df = df.groupby(["set", "flag"])["id"].count().reset_index()
count_bars = hv.Bars(df, kdims=["set","flag"], vdims="id")

plot = (count_bars
        .opts(hooks=[hook], title="IDs",invert_axes=True, width=500, padding=2)
        .redim.values(flag=["Y", "N"]) # Inverting the axes flips this order. This produces N, Y vertically
        .sort("set", reverse=True)
       )

Рендеринг объекта боке и работа с ним:

from bokeh.io import show
import holoviews as hv
hv.extension("bokeh")
    
df = pd.DataFrame({
    "set": list("ABABCCAD"),
    "flag": list("YYNNNYNY"),
    "id": list("DEFGHIJK"),
})

df = df.groupby(["set", "flag"])["id"].count().reset_index()
count_bars = hv.Bars(df, kdims=["set","flag"], vdims="id")

plot = (count_bars
        .opts(title="IDs",invert_axes=True, width=500, padding=2)
        .redim.values(flag=["Y", "N"]) # Inverting the axes flips this order. This produces N, Y vertically
        .sort("set", reverse=True)
       )

bokeh_figure = hv.render(plot)
bokeh_figure.xaxis.major_tick_line_color = None        # turn off x-axis major ticks
bokeh_figure.xaxis.minor_tick_line_color = None        # turn off x-axis minor ticks
bokeh_figure.xaxis.major_label_text_font_size = '0pt'  # turn off x-axis tick labels

show(bokeh_figure)

Оба метода создают этот график:  введите описание изображения здесь

person Cameron Riddell    schedule 13.10.2020
comment
Выглядит неплохо! Я думаю, что OP хотел сохранить метки, поэтому строки с major_label_text_font_size = '0pt' здесь будут опущены. - person James A. Bednar; 13.10.2020