У меня проблема с использованием пакета Bokeh в Python - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь использовать инструмент наведения, используя пакет Bokeh.У меня есть фрейм данных pandas со столбцами с именами «Wealth_Gap», «Infant_Mortality» и «country».Я хотел бы построить значения для Infant_Mortality и Wealth_Gap с названием страны, используемым в инструменте наведения.

Мой код следующий:

import pandas as pd
from bokeh.models import ColumnDataSource, HoverTool
from bokeh.plotting import figure, show

data = {
    'Wealth_Gap': [30.5, 27.9, 34.2],
    'Infant_Mortality': [3.0, 3.2, 2.3],
    'country': ['Austria', 'Belgium', 'Cyprus']
}

infant_mort_wealth_gap = pd.DataFrame(data,
    columns=['Wealth_Gap', 'Infant_Mortality', 'country'])

source = ColumnDataSource(data=dict(
    x = infant_mort_wealth_gap['Wealth_Gap'],
    y = infant_mort_wealth_gap['Infant_Mortality'],
    desc = infant_mort_wealth_gap['country']
))

p = figure( title='Infant mortality vs wealth gap', 
x_axis_label='Wealth gap', y_axis_label='Infant mortality')

hover = HoverTool()

hover.tooltips = [
    ("index", "$index"),
    ("(x,y)", "($x, $y)"),
    ("desc", "@desc")
]

p.circle('x', 'y', size=20, source=source)

p.tools.append(hover)

show(p)

Это дает следующую ошибку:

TypeError: Object of type 'DataFrame' is not JSON serializable

Я думал, что в качестве списка будут приниматься только значения x, y и hover.Поэтому я попробовал следующее:

a = infant_mort_wealth_gap['Wealth_Gap'].tolist()
b = infant_mort_wealth_gap['Infant_Mortality'].tolist()

c = infant_mort_wealth_gap['country'].astype(str)
c = c.tolist()

и назначил следующим образом:

x = a; y = b; desc = c

, но это возвращает ту же ошибку.

Я также посмотрел онлайни использовал это: Решено: Python Bokeh Hover Tool, предоставляющее: AttributeError: неожиданный атрибут «всплывающие подсказки» для рисунка , но все еще не может его решить.

Любая помощь будет великолепна, ура.

1 Ответ

0 голосов
/ 18 октября 2018

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


Редактировать : Ничего не стоит, это результат того, что автор добавил некоторые фиктивные данные иимпортировать операторы в пример кода, чтобы проблема стала воспроизводимой.Таким образом, как упоминалось в комментариях Даниэля Р. , проблема, вероятно, заключается в реальных данных.


The result

...