熊猫散点图可以无交互地绘制图形

时间:2019-03-26 15:40:42

标签: python pandas matplotlib plotly

我想知道是否可以通过plotly / cufflink将pandas.plotting散点图矩阵转换为一个plotly图形,我可以在dash app中使用它而无需交互,因为这会浪费资源。

所以我创建了一个散布图矩阵:

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 :(得分:0)

我没有使用破折号,但是我已经根据documentation for dash使用了plot:

  

“ dash_core_components.Graph组件中的图形参数与Plotly的开源Python图形库plotly.py使用的图形参数相同。”

由于plotly具有本机scatter plot matrix obj,并且看上去比熊猫散点图矩阵更加流畅,  我建议尝试从破折号和散点图矩阵文档改编以下代码。我设置了hoverinfo='skip'dragmode=Nonehovermode=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)

我在一个简单数据集上得到的输出如下所示: Scatter Plot Matrix from Plotly