Построение на правой оси в Боке - PullRequest
0 голосов
/ 24 сентября 2019

Я строю мультикатегоричный блокпост и у меня возникают проблемы с выравниванием блокпостов, чтобы они находились в правильном положении.

У меня есть моя ось х генов, которая подразделяется на базы данных.Но мой сюжет все посередине на гене.

Я делаю свою ось так:

x = sorted(list(set([(gene, database) for gene in totaldf['gene'].to_list() for database in totaldf['db'].to_list()])))
p = figure(background_fill_color="#efefef", x_range=FactorRange(*x), width=1600, height=700)

и пытаюсь построить свои прямоугольники так:

p.vbar(x=(gene, db), width=0.7, bottom=q2[gene, db], top=q3[gene, db], fill_color="#ffffff", line_color="black")
p.vbar(x=(gene, db), width=0.7, bottom=q1[gene, db], top=q2[gene, db], fill_color="#ffffff", line_color="black")

В результате мой график строится так:https://imgur.com/a/8Q8YC1N

Как сделать так, чтобы сюжет находился в нужных местах?Фрейм данных выглядит следующим образом:

      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 голос
/ 24 сентября 2019

gene и db - это столбцы из DataFrame?Координаты не предоставляются в правильном формате.Вы предоставляете 2 кортежа списков , но для этого требуется список из 2 кортежей .Список координат должен выглядеть следующим образом:

x=[(gene1, db1), (gene2, db2), ...])

Возможно, zip(gene, db) предоставит то, что вы намереваетесь.

При всем этом я также настоятельно рекомендую использовать явно созданные ColumnDataSource при работе с вложенными категориальными данными.Существуют некоторые неясности, которые могут возникнуть, и создание CDS самостоятельно устраняет их.

...