In [1]:
from bokeh.sampledata.autompg import autompg as df
from bokeh.charts import Scatter, output_notebook, show
from bokeh.models import HoverTool
output_notebook()


Loading BokehJS ...

In [23]:
hover = HoverTool(
    tooltips = [
    ("cyl", "@cyl"),
    ("Weight", "@weight"),
    ("Acceleration", "@accel"),
    ('Horsepower', '@hp'),
    ('Origin', '@origin'),
])
tools = [hover]
scatter = Scatter(df, x='mpg', y='hp', color='cyl', marker='origin',
                  title="Auto MPG", xlabel="Miles Per Gallon",
                  ylabel="Horsepower", tools=tools)
show(scatter)


Out[23]:

<Bokeh Notebook handle for In[23]>


In [28]:
from bokeh.models import GlyphRenderer
for renderer in scatter.renderers:
    if isinstance(renderer, GlyphRenderer):
        print(renderer.data_source.column_names)


['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']
['y_values', 'x_values']

In [35]:
import pandas as pd
r = scatter.renderers[0]
pd.DataFrame(r.data_source.data)


Out[35]:
chart_index cyl origin x_values y_values
0 {'origin': 1, 'cyl': 8} 8 1 18.0 130
1 {'origin': 1, 'cyl': 8} 8 1 15.0 165
2 {'origin': 1, 'cyl': 8} 8 1 18.0 150
3 {'origin': 1, 'cyl': 8} 8 1 16.0 150
4 {'origin': 1, 'cyl': 8} 8 1 17.0 140
5 {'origin': 1, 'cyl': 8} 8 1 15.0 198
6 {'origin': 1, 'cyl': 8} 8 1 14.0 220
7 {'origin': 1, 'cyl': 8} 8 1 14.0 215
8 {'origin': 1, 'cyl': 8} 8 1 14.0 225
9 {'origin': 1, 'cyl': 8} 8 1 15.0 190
10 {'origin': 1, 'cyl': 8} 8 1 15.0 170
11 {'origin': 1, 'cyl': 8} 8 1 14.0 160
12 {'origin': 1, 'cyl': 8} 8 1 15.0 150
13 {'origin': 1, 'cyl': 8} 8 1 14.0 225
14 {'origin': 1, 'cyl': 8} 8 1 10.0 215
15 {'origin': 1, 'cyl': 8} 8 1 10.0 200
16 {'origin': 1, 'cyl': 8} 8 1 11.0 210
17 {'origin': 1, 'cyl': 8} 8 1 9.0 193
18 {'origin': 1, 'cyl': 8} 8 1 14.0 165
19 {'origin': 1, 'cyl': 8} 8 1 14.0 175
20 {'origin': 1, 'cyl': 8} 8 1 14.0 153
21 {'origin': 1, 'cyl': 8} 8 1 14.0 150
22 {'origin': 1, 'cyl': 8} 8 1 12.0 180
23 {'origin': 1, 'cyl': 8} 8 1 13.0 170
24 {'origin': 1, 'cyl': 8} 8 1 13.0 175
25 {'origin': 1, 'cyl': 8} 8 1 13.0 165
26 {'origin': 1, 'cyl': 8} 8 1 14.0 175
27 {'origin': 1, 'cyl': 8} 8 1 15.0 150
28 {'origin': 1, 'cyl': 8} 8 1 14.0 153
29 {'origin': 1, 'cyl': 8} 8 1 17.0 150
... ... ... ... ... ...
73 {'origin': 1, 'cyl': 8} 8 1 13.0 150
74 {'origin': 1, 'cyl': 8} 8 1 16.5 180
75 {'origin': 1, 'cyl': 8} 8 1 13.0 145
76 {'origin': 1, 'cyl': 8} 8 1 13.0 130
77 {'origin': 1, 'cyl': 8} 8 1 13.0 150
78 {'origin': 1, 'cyl': 8} 8 1 17.5 145
79 {'origin': 1, 'cyl': 8} 8 1 17.0 110
80 {'origin': 1, 'cyl': 8} 8 1 15.5 145
81 {'origin': 1, 'cyl': 8} 8 1 15.0 130
82 {'origin': 1, 'cyl': 8} 8 1 16.0 180
83 {'origin': 1, 'cyl': 8} 8 1 15.5 170
84 {'origin': 1, 'cyl': 8} 8 1 15.5 190
85 {'origin': 1, 'cyl': 8} 8 1 16.0 149
86 {'origin': 1, 'cyl': 8} 8 1 19.9 110
87 {'origin': 1, 'cyl': 8} 8 1 19.4 140
88 {'origin': 1, 'cyl': 8} 8 1 20.2 139
89 {'origin': 1, 'cyl': 8} 8 1 19.2 145
90 {'origin': 1, 'cyl': 8} 8 1 18.1 139
91 {'origin': 1, 'cyl': 8} 8 1 17.5 140
92 {'origin': 1, 'cyl': 8} 8 1 17.0 130
93 {'origin': 1, 'cyl': 8} 8 1 17.6 129
94 {'origin': 1, 'cyl': 8} 8 1 16.5 138
95 {'origin': 1, 'cyl': 8} 8 1 18.2 135
96 {'origin': 1, 'cyl': 8} 8 1 16.9 155
97 {'origin': 1, 'cyl': 8} 8 1 15.5 142
98 {'origin': 1, 'cyl': 8} 8 1 19.2 125
99 {'origin': 1, 'cyl': 8} 8 1 18.5 150
100 {'origin': 1, 'cyl': 8} 8 1 23.0 125
101 {'origin': 1, 'cyl': 8} 8 1 23.9 90
102 {'origin': 1, 'cyl': 8} 8 1 26.6 105

103 rows × 5 columns


In [ ]: