Создайте сетку графиков с помощью holoviews / hvplot и установите максимальное количество столбцов - PullRequest
4 голосов
/ 08 января 2020

Я хотел бы вывести несколько данных в сетку с помощью holoviews / hvplot, основанной на одном измерении, которое содержит несколько уникальных точек данных.

С учетом этого примера:

import seaborn as sns
import hvplot.pandas

iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
hvplot.show(plot)

Приведенный выше код создает несколько графиков на основе видовой части набора данных радужной оболочки, в результате чего на рисунке ниже:
hvplot gridspace example with too many columns

Но теперь представьте, что не было 3 разных видов, но двадцать. Сюжет станет широким, поэтому я хотел бы разорвать линию после нескольких сюжетов. Но я не смог найти параметр "максимальные столбцы". Обычная сетка ожидает, что другой столбец определит строки, которых у меня нет.

Любые предложения помогут.

Ответы [ 2 ]

2 голосов
/ 08 января 2020

В вашем случае я бы не создал Gridspace (используя ключевые слова 'row' и 'col'), но Layout .
Если у вас есть макет, вы можете легко настроить количество столбцов с помощью .cols (2) .

Используя hvplot, вы должны использовать ключевое слово 'by' и ' subplots = True 'вместо' col '.

См. код ниже:

iris.hvplot.scatter(
    x='sepal_length',
    y='sepal_width',
    by='species',
    subplots=True,
).cols(2)


Итоговый график:

creating a layout to show plots

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

Объект HoloViews, возвращаемый вышеуказанным вызовом, представляет собой GridSpace, в котором используются заголовки столбцов для обозначения значений по внешним измерениям строк и столбцов. Если бы вы разбили линию на таком графике, заголовки столбцов были бы перепутаны, так что я уверен, что это никогда не сработает напрямую.

Несмотря на это, вы можете вытащить отдельные элементы в GridSpace и поместить их в макет HoloViews (который допускает разрыв строки), при условии, что вы помечаете каждый график так, чтобы вы знали значение по измерению вида :

import seaborn as sns, hvplot.pandas, holoviews as hv

iris = sns.load_dataset('iris')
plot = iris.hvplot.scatter(x="sepal_length", y="sepal_width", col="species")
p2   = hv.Layout([i.relabel(n).opts() for n,i in plot.items()]).cols(2)
hvplot.show(p2)

screenshot

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