Невозможно импортировать имя «Scatter» из «bokeh.plotting» - PullRequest
1 голос
/ 09 января 2020

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

from bokeh.plotting import Scatter, output_file, show import pandas

df=pandas.Dataframe(colume["X","Y"])

df["X"]=[1,2,3,4,5,6,7]
df["Y"]=[23,43,32,12,34,54,33]

p=Scatter(df,x="X",y="Y", title="Day Temperature measurement", xlabel="Tempetature", ylabel="Day")
output_file("File.html")
show(p)

Вывод должен выглядеть следующим образом: Ожидаемый вывод

Ошибка:

ImportError                               Traceback (most recent call
> last) <ipython-input-14-1730ac6ad003> in <module>
> ----> 1 from bokeh.plotting import Scatter, output_file, show
>       2 import pandas
>       3 
>       4 df=pandas.Dataframe(colume["X","Y"])
>       5 

ImportError: невозможно импортировать имя 'Scatter' из 'bokeh.plotting' (C: \ Users \ LENOVO \ Anaconda3 \ lib \ site-packages \ bokeh \ plotting__init __. py)

Я также обнаружил, что Scatter больше не поддерживается. Есть ли способ его использовать? Кроме того, какую альтернативу я должен представлять данные так же, как Scatter, используя любые другие python библиотеки?

Использование более старой версии Bokeh решит эту проблему?

Ответы [ 2 ]

1 голос
/ 09 января 2020

Scatter (с большой буквы S) никогда не был частью bokeh.plotting. Раньше он был частью старого bokeh.charts API, который был удален через несколько лет go. Однако для создания базовых c диаграмм рассеяния вообще не требуется, поскольку все методы глифа в bokeh.plotting (например, circle, square) все неявно являются функциями типа разброса, начиная с:

from bokeh.plotting import figure, show
import pandas as pd

df = pd.DataFrame({"X" :[1,2,3,4,5,6,7],
                   "Y": [23,43,32,12,34,54,33]})

p = figure(x_axis_label="Tempetature", y_axis_label="Day", 
           title="Day Temperature measurement")
p.circle("X", "Y", size=15, source=df)

show(p)

Что дает:

enter image description here

Вы также можете просто передать данные непосредственно в circle как в другом ответе .

Если вы хотите делать более причудливые вещи, например отображать тип маркера на основе столбца , на рисунке также есть методы plot.scatter (строчные буквы):

from bokeh.plotting import figure, show
from bokeh.sampledata.iris import flowers
from bokeh.transform import factor_cmap, factor_mark

SPECIES = ['setosa', 'versicolor', 'virginica']
MARKERS = ['hex', 'circle_x', 'triangle']

p = figure(title = "Iris Morphology")
p.xaxis.axis_label = 'Petal Length'
p.yaxis.axis_label = 'Sepal Width'

p.scatter("petal_length", "sepal_width", source=flowers, legend_field="species", fill_alpha=0.4, size=12,
          marker=factor_mark('species', MARKERS, SPECIES),
          color=factor_cmap('species', 'Category10_3', SPECIES))

show(p)

, что дает:

enter image description here

1 голос
/ 09 января 2020

Если вы посмотрите «разброс» в документах, вы найдете

Маркеры разброса

Для разброса круговых маркеров на графике используйте circle() метод, показанный на рисунке:

from bokeh.plotting import figure, output_file, show

# output to static HTML file
output_file("line.html")

p = figure(plot_width=400, plot_height=400)

# add a circle renderer with a size, color, and alpha
p.circle([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], size=20, color="navy", alpha=0.5)

# show the results
show(p)

Для работы с фреймами данных просто передайте столбцы, такие как df.X и df.Y, в аргументы x и y.

from bokeh.plotting import figure, show, output_file
import pandas as pd

df = pd.DataFrame(columns=["X","Y"])

df["X"] = [1,2,3,4,5,6,7]
df["Y"] = [23,43,32,12,34,54,33]

p = figure()
p.scatter(df.X, df.Y, marker="circle")

#from bokeh.io import output_notebook
#output_notebook()

show(p)  # or output to a file...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...