Holoviews: удалить имена переменных из оси x на сгруппированной гистограмме - PullRequest
2 голосов
/ 10 января 2020

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

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

barchart without legend and superfluous xticks

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

  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

Спасибо!

Ответы [ 3 ]

3 голосов
/ 16 января 2020

Вы можете использовать .opts (multi_level = False) на вашем сгруппированном барплоте .
Это удалит ваши x-метки для вторичной категориальной переменной и добавит легенду на ваш сгруппированный барплот.

Однако для этого вам нужен 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)


Результирующий участок:

grouped barchart with legend added and xticks removed

1 голос
/ 15 января 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: добавление легенды к сгруппированной гистограмме:
Все еще ищем ответ на этот вопрос. Я думаю, это также возможно при использовании Bokeh.
См. Мой вопрос здесь: https://discourse.bokeh.org/t/add-legend-afterwards-to-bokeh-plot/4519/3


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

1 голос
/ 11 января 2020

Насколько я искал, pandas сюжет с 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

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...