Как связать ось на нескольких графиках головокружений?

Я создал графики для даташейдера с головокружениями:

datashade(hv.Points(df[
    [
        'PS Engine-% Load', 
        'PS Engine-Fuel Rate',
    ]
])) + datashade(hv.Points(df[
    [
        'SB Engine-% Load', 
        'SB Engine-Fuel Rate',
    ]
]))

Оба графика построены нормально, теперь я хочу связать диапазоны оси, поэтому, когда я увеличиваю один график, другой график также увеличивается таким же образом. Насколько я понимаю, обычно оси связаны, когда исходные значения совпадают. В этом случае источники для осей X и Y различаются (обратите внимание на значения PS и SB), но диапазоны совпадают. Как связать эти оси?


person Martijn de Munnik    schedule 31.08.2017    source источник


Ответы (1)


Да, HoloViews будет автоматически связывать измерения, которые он считает «одинаковыми», где «одинаковые» сводятся к тому, что они имеют одинаковое имя и единицу измерения. В этом случае, вероятно, проще всего убедиться, что измерения, которые вы хотите связать, имеют одинаковое имя столбца во фрейме данных:

df_ps = df.rename(columns={'PS Engine-% Load': '% Load'})
df_sb = df.rename(columns={'SB Engine-% Load': '% Load'})
datashade(hv.Points(df_ps[['% Load','PS Engine-Fuel Rate']])) + \
datashade(hv.Points(df_sb[['% Load','SB Engine-Fuel Rate']]))

Если Fuel Rate также должен быть связан, просто добавьте это в словарь переименования для каждого из них. Пример перед масштабированием:

Без увеличения

и после увеличения:

После увеличения

person James A. Bednar    schedule 03.09.2017
comment
За исключением одного :( Когда я увеличиваю масштаб, график не перерисовывается, поэтому пиксели становятся больше при увеличении. Как только вернусь к старому методу, график снова перерисовывается. Что могло вызвать это? - person Martijn de Munnik; 03.09.2017
comment
Не уверен; Я расширил ответ, включив в него пример этого, и, как вы можете видеть, оси связаны, и график даташейдера обновляется. Если вы попробуете это сделать, но проблемы не исчезнут, вероятно, в вашей консоли JS есть ошибки (поищите в Интернете, как открыть это в своем браузере). - person James A. Bednar; 05.09.2017
comment
Проблема отсутствия обновления изображения при масштабировании была вызвана параметром «%% output size = 200» в ячейке. После удаления все заработало, как ожидалось. Я попробую найти решение, но это другая проблема. - person Martijn de Munnik; 05.09.2017