Holoviews: удалить имена переменных с оси x на сгруппированной гистограмме

Быстрый вопрос о сгруппированной (несложенной) гистограмме HoloViews. Как я могу удалить галочки имени переменной оси X, но включить их в легенду?

См. пример ниже:

гистограмма без легенды и лишних галочек

Я хотел бы сделать следующее:

  1. Для красного поля уберите названия для галочек "x" и "y"
  2. Добавьте легенду для «x» и «y», выровненную по соответствующим цветам.

Код ниже:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
import holoviews as hv
pd.options.plotting.backend = 'holoviews'

df1 = pd.DataFrame({
    'x': np.random.rand(10), 
    'y': np.random.rand(10),
})

my_plot = df1.plot(kind='bar')
my_plot

Благодарю вас!


person Amen_90    schedule 10.01.2020    source источник


Ответы (3)


Вы можете использовать .opts(multi_level=False) на сгруппированной гистограмме.
Это удалит ваши галочки для вторичной категориальной переменной и добавит легенду к сгруппированной гистограмме.
< br> Однако для этого вам потребуется HoloViews >=1.13.
Эта версия, на момент написания этой статьи, еще недоступна, но вы можете установить ее через:

pip install git+https://github.com/holoviz/holoviews.git


Пример кода:

import numpy as np
import pandas as pd
import holoviews as hv
pd.options.plotting.backend = 'holoviews'

df1 = pd.DataFrame({
    'x': np.random.rand(10), 
    'y': np.random.rand(10),
})

my_grouped_barplot = df1.plot(kind='bar')

# remove the 2nd categorical level with multi_level=False
# this will remove your x-ticks and add a legend
my_grouped_barplot.opts(multi_level=False)


Результирующий график:

сгруппированная гистограмма с добавлением легенды и удалением галочек

person Sander van den Oord    schedule 16.01.2020

Насколько я искал, сюжет панд с holoview (боке) не предлагает нужных вам стилей. Гистограмма не имеет легенды, а групповая диаграмма имеет имена в метке x.

Вместо этого используйте matplotlib, так как бэкенд прост.

import pandas as pd
import numpy as np

pd.options.plotting.backend = 'matplotlib'

df1 = pd.DataFrame({
                    'x': np.random.rand(10), 
                    'y': np.random.rand(10)
                    })

Plot = df1.plot(kind = 'bar', rot=0)
Plot

введите здесь описание изображения

Если вы редактируете каталог Bokeh, он предлагает установить легенды и xlabels вручную.

person shimo    schedule 11.01.2020

Вопрос 1: удаление галочек из сгруппированных гистограмм

Обычно можно удалить your_plot.opts(xticks=[(None)]), чтобы удалить галочки, но, к сожалению, это невозможно для сгруппированных гистограмм.

> Решение 1: визуализируйте свой график как график Боке, а затем удалите галочки:

from bokeh.plotting import show

# create holoviews plot
my_holoviews_plot = df1.plot(kind='bar')

# render holoviews plot to bokeh plot
my_bokeh_plot = hv.render(my_holoviews_plot, backend='bokeh')

# apply changes to bokeh plot
my_bokeh_plot.xaxis.major_label_text_font_size = '0pt'

# visualize plot
show(my_bokeh_plot)



Вопрос 2: добавление легенды к сгруппированной гистограмме
Все еще ищу ответ на этот вопрос. Думаю, это также должно быть возможно с использованием боке.
См. мой вопрос здесь: https://discourse.bokeh.org/t/add-legend-afterwards-to-bokeh-plot/4519/3


( заметка для себя: вы можете получить хорошее представление о многих свойствах my_bokeh_plot, нажав вкладку после my_bokeh_plot. в jupyter, но еще один хороший способ — запустить my_bokeh_plot.properties_with_values() для более сложных свойств).

person Sander van den Oord    schedule 14.01.2020