Графики Holoviews совместно используют ось при комбинировании и выводе - PullRequest
2 голосов
/ 09 января 2020

Я использую Holoviews для построения панели диаграмм. Некоторые из этих диаграмм имеют проценты по оси Y, в то время как другие имеют суммы / числа и т. Д. c. Когда я пытаюсь вывести все созданные мной диаграммы в файл html, все диаграммы меняют свою ось y в соответствии с осью первой диаграммы в моем списке диаграмм.

Например:

  • Диаграмма 1 представляет собой сумму, значения go от 0 до 1000
  • Диаграмма 2 представляет собой%
  • Диаграмма 3 - это%

, когда я объединяю эти диаграммы в holoviews, используя:

  • Графики = Диаграмма 1 + Диаграмма 2 + Диаграмма 3

Оси Y на диаграммах 2 и 3 совпадают с диаграммой 1.

Кто-нибудь знает, почему это происходит, и как я могу это исправить, чтобы все диаграммы сохраняли свою индивидуальную ось в соответствии с тем, что они пытаются представить ,

Спасибо!

Ответы [ 2 ]

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

Ответ Сандера верный и решит вашу конкретную проблему c, но в этом случае она может не устранять причину root. HoloViews связывает только те оси, которые совпадают, и кажется, что вы наносите разные величины на оси Y на каждом графике. В этом случае реальное исправление состоит в том, чтобы ввести реальное имя для оси y каждого графика, что отличает его от других вещей, которые вы, возможно, захотите построить на оси y в другом графике, который вы показываете. Тогда HoloView не только больше не будет неправильно связывать оси, но и зритель вашего графика сможет сказать, что каждый график показывает разные вещи.

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

Это происходит, когда оси Y имеют одно и то же имя.
Вам необходимо использовать параметр axiswise = True , если вы хотите, чтобы каждый график получал свои независимые оси X и Y.

В holoviews FAQ есть краткая ссылка на ось:
https://www.holoviews.org/FAQ.html

Вот пример кода , который я проверил и работает:

# import libraries etc.
import numpy as np
import pandas as pd
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')

# create some sample data
df1 = pd.DataFrame({
    'x': np.random.rand(10), 
    'y': np.random.rand(10),
})

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

# set axiswise=True so that every plot gets its own independent x- and y-axis    
plot1 = hv.Scatter(df1).opts(axiswise=True)
plot2 = hv.Scatter(df2).opts(axiswise=True)

plot1 + plot2

Или вы можете сделать следующее:

plot1 = hv.Scatter(df1)
plot2 = hv.Scatter(df2)

(plot1 + plot2).opts(opts.Scatter(axiswise=True))


Если это не сработает , когда вы попробуете мой пример кода, Возможно, вам придется обновить до последней версии holoviews. Это можно сделать следующим образом:
Установить последние git версии holoviews, hvplot, panel, datashader и param

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