изменение оси holoviews, чтобы быть в правильном формате - PullRequest
1 голос
/ 20 сентября 2019

Я пытаюсь создать график с несколькими осями.Но вместо того, чтобы поместить Gene и db на ось x и мутации на ось y, holoviews отображает db на оси y и ген на оси x.

Как я могу получить много категориальный сюжет из этого?

mutated_positions = hv.Scatter(totaldf,
              ['gene', 'db'], 'mutations', xrotation=45).opts(size=10, color='#024bc2', line_color='#002869', jitter=0.2, alpha=0.5)

Текущий график выглядит так: https://imgur.com/a/NNaIJdr Я пытаюсь получить ось так: https://imgur.com/a/ZmXjvRa с мутациями на оси Y.

Используемый мной фрейм данных выглядит следующим образом:

      gene       db  mutations
0     IGHV1-3  G1K_CL2          6
1    IGHV1-58  G1K_CL2          2
2    IGHV1-58  G1K_CL2          3
3     IGHV1-8  G1K_CL2          2
4    IGHV3-16  G1K_CL2          3
..        ...      ...        ...
141  IGHV4-61  G1K_CL3         11
142  IGHV4-61  G1K_CL3         12
143  IGHV4-61  G1K_CL3         10
144  IGHV4-61  G1K_CL3         13
145  IGHV7-81  G1K_CL3          4

1 Ответ

1 голос
/ 20 сентября 2019

Приведенный ниже код представляет собой способ размещения ваших мутаций на оси 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 [ген]

: разброс [дБ] (мутации)

Полученный график выглядит следующим образом:
Ndlayout for gene db and mutations

В качестве альтернативы вы также можете использовать библиотеку 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...