ошибка Python Bokeh с выходным файлом в классе - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с использованием боке в классе.

Следующий код выполняется, когда я использую объект «График» в том же файле (.py), но не тогда, когда я вызываю класс из другого файла, и я не знаю почему.

class Graph():

    import pandas as pd

    from bokeh.models import HoverTool

    from bokeh.plotting import figure, show, output_file, ColumnDataSource

    def __init__(self, df, indicators=None):

        self.df = df

        self.output_file("test.html" , title='test')

        ....

У меня следующая ошибка:

TypeError: output_file() got multiple values for argument 'title'

Кто-нибудь знает, как я могу это исправить?

Для информации, следующий код:

class Graph():

    import pandas as pd

    from bokeh.models import HoverTool

    from bokeh.plotting import figure, show, output_file, ColumnDataSource

    def __init__(self, df, indicators=None):

        self.df = df

        self.output_file("test.html")

        ....

возвращает:

Traceback (most recent call last):
  File "Documents/Programmation/python/Trade/Indicators.py", line 50, in <module>
a = TradeGraph(df)
  File "/Users/Alex/Documents/Programmation/python/Graph.py", line 29, in __init__
self.output_file("test.html")
  File "/anaconda3/lib/python3.6/site-packages/bokeh/io/output.py", line 77, in output_file
root_dir=root_dir
  File "/anaconda3/lib/python3.6/site-packages/bokeh/io/state.py", line 166, in output_file
if os.path.isfile(filename):
  File "/anaconda3/lib/python3.6/genericpath.py", line 30, in isfile
st = os.stat(path)
TypeError: stat: path should be string, bytes, os.PathLike or integer, not Graph

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

class Graph():

    import pandas as pd

    from bokeh.models import HoverTool

    from bokeh.plotting import figure, show, output_file, ColumnDataSource

    def __init__(self, df, indicators=None):

        self.df = df

        self.output_file()

        ....

возвращает ту же (последнюю) ошибку.

Спасибо

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

Спасибо за ответ,

В конце концов, я импортирую каждый необходимый модуль в каждый метод.

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

Спасибо

0 голосов
/ 06 сентября 2018

Вы явно определили метод output_file в своем собственном классе, и в этом проблема. (Кроме того, всегда старайтесь задавать вопросы с минимальным кодом complete ). Исходя из вышеприведенного вывода, наиболее вероятным объяснением является то, что вы забыли добавить параметр self, который всегда должен иметь методы Python. То есть у вас есть что-то вроде:

class Graph(object):

    def output_file(title):

когда вам нужно что-то вроде:

class Graph(object):

    def output_file(self, title):

Однако я бы вообще поставил под сомнение ценность метода output_file. Если вы не делаете что-то необычное, вам нужно просто вызвать функцию Боке output_file напрямую. Однако обратите внимание, что output_file активирует постоянный неявный режим . Это полезно, особенно в интерактивных средах, но не может быть в программе, которая экономит много вещей. Существует также функция save, которая просто дает вам явный контроль, где бы вы ни хотели выполнить сохранение.

...