Holoviews: два выпадающих - PullRequest
       27

Holoviews: два выпадающих

1 голос
/ 24 апреля 2020

Я новичок в Python и пытаюсь использовать Holoviews, чтобы построить выборки из двух выпадающих друг против друга. У меня есть данные в CSV-файле, который выглядит следующим образом:

time    col1    col2    col3    col4
0.01    1.9     .023    138     9.10
0.02    2.3     .024    155     9.75
0.03    3.0     .027    162     10.3

Я хочу иметь возможность выбрать любые два столбца и построить их друг против друга: col1 против col2, col3 против времени и т. Д. c , Я выяснил, как сделать ОДИН выпадающий список и построить любой столбец для одного предопределенного ключевого измерения, но я не могу понять, как сделать второй выпадающий список, чтобы позволить мне изменить kdim.

Мой код:

df = pd.read_csv("data.csv")
cols = list(df.columns)
hv.HoloMap({column: hv.Curve(df, 'time', column) for column in cols}).opts(framewise = True)

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете получить 2 раскрывающихся списка и выбрать любую комбинацию из 2 столбцов вашего набора данных, создав HoloMap или DynamicMap .

  • Создание HoloMap : это график, где количество комбинаций графиков является фиксированным и создается заранее. Вот рабочий пример:
# import libraries
import numpy as np
import pandas as pd
import holoviews as hv
hv.extension('bokeh')

# create sample data
df = pd.DataFrame(
    data=np.random.rand(50, 4),
    columns=['col1', 'col2', 'col3', 'col4'],
)
df['time'] = np.arange(0., 0.5, step=0.01)

# loop over your column names twice to create all possible plots in your holomap
hv.HoloMap({
    (col1, col2): hv.Scatter((df[col1], df[col2])) for col1 in df.columns for col2 in df.columns},
    kdims=['x', 'y'],
)


  • Другой способ - создание DynamicMap , в котором не создано количество комбинаций графиков. заранее, но создается на лету при изменении выпадающих списков:
# function that creates the dynamic plot when called by your dynamicmap
def plot_scatter(x, y):
    return hv.Scatter((df[x], df[y]))

# create your dynamicmap
dmap = hv.DynamicMap(plot_scatter, kdims=['x', 'y'])

# define the range of values that your dropdowns should have
dmap.redim.values(x=df.columns, y=df.columns)



Результирующий сюжет:

HoloMap two dropdowns

...