Приведенный ниже код представляет собой способ размещения ваших мутаций на оси Y и размещения дБ и / или гена на оси X.
Создает Ndlayout , что означает, что для каждого гена создается отдельный график.
# import libraries
import pandas as pd
import holoviews as hv
from holoviews import opts
hv.extension('bokeh')
# create dataframe
data = [
['IGHV4-61', 'G1K_CL2', 11],
['IGHV4-61', 'G1K_CL3', 12],
['IGHV4-61', 'G1K_CL3', 10],
['IGHV7-81', 'G1K_CL2', 13],
['IGHV7-81', 'G1K_CL3', 4],
]
df = pd.DataFrame(data, columns=['gene', 'db', 'mutations'])
# create layout plot with mutations on the y-axis
layout_plot = hv.Dataset(df).to.scatter('db', 'mutations').layout('gene')
# make plot look nicer
layout_plot = layout_plot.opts(opts.Scatter(size=10, ylim=(0, 15), width=250))
# show structure of holoviews layout plot
print(layout_plot)
# show plot in Jupyter
layout_plot
Структура графика выглядит следующим образом:
: NdLayout [ген]
: разброс [дБ] (мутации)
Полученный график выглядит следующим образом:
В качестве альтернативы вы также можете использовать библиотеку hvplot, которая построена поверх holoviews, она даст вам то же, что и выше.Это работает в основном так же, как построение панд, где вы можете использовать аргумент = 'gene' и subplots = 'True' для создания Ndlayout.
# import libraries
import hvplot
import hvplot.pandas
hv.extension('bokeh')
# create layout plot with hvplot
layout_plot = df.hvplot(
kind='scatter',
x='db',
y='mutations',
by='gene',
subplots=True, # creates a layout
size=100, # marker size
ylim=(0, 15),
width=250, # width of plot
)
# show structure of holoviews layout plot
print(layout_plot)
# show plot in Jupyter
layout_plot