Python:如何从mlpd3,Bokeh,Plotly中链接的笔刷中获取数据?

使用下面的代码,我可以得到一个2x2图形和4个图表。 使用画笔,我可以选择一些数据点。 我的问题是如何将选定的数据点作为JSON数组或CVS。 此代码使用mlpd3,但散景可以使用画笔进行类似选择。但是没有选择数据点的示例。 我试图将选定的数据作为对象继续使用python进行处理。 在单元中看到数据会很高兴。

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mat
import mpld3

mpld3.enable_notebook()


from mpld3 import plugins

fig, ax = plt.subplots(2, 2, figsize=(10, 8))
fig.subplots_adjust(hspace=0.1, wspace=0.1)
ax = ax[::-1]

X = np.random.normal(size=(2, 100))
for i in range(2):
    for j in range(2):
        ax[i, j].xaxis.set_major_formatter(plt.NullFormatter())
        ax[i, j].yaxis.set_major_formatter(plt.NullFormatter())
        points = ax[i, j].scatter(X[j], X[i])

plugins.connect(fig, plugins.LinkedBrush(points))

在CustomJS for Selections中,Bokeh具有相似的行为

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#userguide-interaction-jscallbacks-customjs-interactions

无论哪一个更容易提取选定的项目 - 将工作..如果有一个Plotly解决方案,那也可以。


这是ipython的外部,但你可以结合d3.jsjquery运行flaskdjango以将数据返回到python。


您可以使用Plotly的新Dash框架从Plotly图表中获取选定的数据。

在“Graph Crossfiltering”下的文档中有一个例子https://plot.ly/dash/getting-started-part-2

为了保存历史,我粘贴了下面的完整示例。

在下面的每个回调中,您都可以访问选定的点,您刚刚悬停的点或您刚点击的点。 这个应用程序只是显示在应用程序中的点的值,但你可以做任何事情的点(例如计算其他东西)。

在Dash应用程序中选择数据的示例gif

import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import json

app = dash.Dash(__name__)

app.layout = html.Div([
    dcc.Graph(
        id='basic-interactions',
        figure={
            'data': [
                {
                    'x': [1, 2, 3, 4],
                    'y': [4, 1, 3, 5],
                    'text': ['a', 'b', 'c', 'd'],
                    'customdata': ['c.a', 'c.b', 'c.c', 'c.d'],
                    'name': 'Trace 1',
                    'mode': 'markers',
                    'marker': {'size': 12}
                },
                {
                    'x': [1, 2, 3, 4],
                    'y': [9, 4, 1, 4],
                    'text': ['w', 'x', 'y', 'z'],
                    'customdata': ['c.w', 'c.x', 'c.y', 'c.z'],
                    'name': 'Trace 2',
                    'mode': 'markers',
                    'marker': {'size': 12}
                }
            ]
        }
    ),

    html.Div([
        dcc.Markdown("""
            **Hover Data**

            Mouse over values in the graph.
        """.replace('   ', '')),
        html.Pre(id='hover-data')
    ], style=styles['column']),

    html.Div([
        dcc.Markdown("""
            **Click Data**

            Click on points in the graph.
        """.replace('    ', '')),
        html.Pre(id='click-data'),
    ], style=styles['column']),

    html.Div([
        dcc.Markdown("""
            **Selection Data**

            Choose the lasso or rectangle tool in the graph's menu
            bar and then select points in the graph.
        """.replace('    ', '')),
        html.Pre(id='selected-data'),
    ])
])


@app.callback(
    Output('hover-data', 'children'),
    [Input('basic-interactions', 'hoverData')])
def display_hover_data(hoverData):
    #
    # This is where you can access the hover data
    # This function will get called automatically when you hover over points
    # hoverData will be equal to an object with that data
    # You can compute something off of this data, and return it to the front-end UI
    # 


    return json.dumps(hoverData, indent=2)


@app.callback(
    Output('click-data', 'children'),
    [Input('basic-interactions', 'clickData')])
def display_click_data(clickData):
    # Similarly for data when you click on a point
    return json.dumps(clickData, indent=2)


@app.callback(
    Output('selected-data', 'children'),
    [Input('basic-interactions', 'selectedData')])
def display_selected_data(selectedData):
    # Similarly for data when you select a region
    return json.dumps(selectedData, indent=2)


if __name__ == '__main__':
    app.run_server(debug=True)
链接地址: http://www.djcxy.com/p/96391.html

上一篇: Python: How to get data from linked brushes in mlpd3, Bokeh, Plotly?

下一篇: angular2: how to get Full path on CanLoad guard while maintaining redirect url