我想知道是否可以通过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')
并获得一个散点图:
答案 0 :(得分:0)
我没有使用破折号,但是我已经根据documentation for dash使用了plot:
“ dash_core_components.Graph组件中的图形参数与Plotly的开源Python图形库plotly.py使用的图形参数相同。”
由于plotly具有本机scatter plot matrix 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)
我在一个简单数据集上得到的输出如下所示: Scatter Plot Matrix from Plotly