Для этого вам нужно будет погрузиться в боке. Вы можете сделать это либо с помощью крючка, либо визуализировать объект боке и работать с ним напрямую:
Подход крюка:
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)
Оба метода создают этот график: ![введите описание изображения здесь](https://i.stack.imgur.com /NEPiQ.png )
person
Cameron Riddell
schedule
13.10.2020
axis
строки, а такжеtick marks
при сохранении этикеток - person Scope   schedule 13.10.2020