Pandas scatterplot для сюжетной фигуры без интерактивности - PullRequest
0 голосов
/ 26 марта 2019

Интересно, можно ли с помощью plotly / cufflink каким-то образом преобразовать матрицу рассеяния pandas.plotting в графическую фигуру, которую я могу использовать в dash-приложении без интерактивности, поскольку она потребляет много ресурсов.

Так что ясоздайте матрицу рассеяния, как это:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import scatter_matrix

ax2 = scatter_matrix(selectedPoints,color='Red', alpha=0.8, figsize=(20, 20), diagonal='hist')

и получите диаграмму рассеяния:

enter image description here

1 Ответ

0 голосов
/ 26 марта 2019

Я не использовал тире, но я использовал заговор, и в соответствии с документацией для тире :

"Аргумент figure в компоненте dash_core_components.Graph:тот же аргумент рисунка, который используется plotly.py, библиотекой графического представления Python с открытым исходным кодом Plotly. "

Так как plotly имеет собственную матрицу точечного графика obj , и она выглядит оченьБолее простой, чем матрица графиков рассеяния панд, я предлагаю попробовать приведенный ниже код, адаптированный из документации матрицы штрихов и графиков рассеяния.Я установил hoverinfo='skip' и dragmode=None и hovermode=None для ограничения интерактивности.Единственное, что я не смог воспроизвести из вашего примера, это гистограммы по диагонали.Очевидно, что для ваших данных вам нужно будет добавить к измерениям столько столбцов, сколько вы хотите в своей матрице.

import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import plotly.graph_objs as go

external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

app = dash.Dash(__name__, external_stylesheets=external_stylesheets)

df = pd.DataFrame(selectedPoints)


app.layout = html.Div([
    dcc.Graph(
        id='SPloM-selectedPoints',
        figure={
            'data': [
                go.Splom(dimensions=[dict(label=df.columns[0],
                                 values=df.iloc[:, 0]),
                            dict(label=df.columns[1],
                                 values=df.iloc[:, 1]),
                            dict(label=df.columns[2],
                                 values=df.iloc[:, 2]),
                            dict(label=df.columns[3],
                                 values=df.iloc[:, 3])],
                text=None,
                marker=dict(color='rgb(255,0,0)',
                            size=7,
                            showscale=False,
                            line=dict(width=0.5,
                                      color='rgb(230,230,230)')), 
                hoverinfo= 'skip')
            ],
            'layout': [
            go.Layout(title='Selected Points',
                dragmode=None,
                width=600,
                height=600,
                autosize=True,
                hovermode=None,
                plot_bgcolor='rgba(240,240,240, 0.95)',
                xaxis1=dict(axis),
                xaxis2=dict(axis),
                xaxis3=dict(axis),
                xaxis4=dict(axis),
                yaxis1=dict(axis),
                yaxis2=dict(axis),
                yaxis3=dict(axis),
                yaxis4=dict(axis)
                )
            ]
        }
    )
])

if __name__ == '__main__':
    app.run_server(debug=True)

Вывод, полученный на простом наборе данных, выглядел так: Матрица точечных диаграмм изPlotly

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...