如何修复在绘图时显示数据但在 运行 带有破折号时显示为空的绘图图?

How to fix plotly graph that shows data when in plotly but appears empty when run with dash?

我正在 dash 中设置一个 dcc.Graph() 对象,并将图形设置为我在 plotly 中创建的散点图。

该图完全按照我在 plotly 中想要的方式显示其所有数据,但是当我 运行 本地服务器并查看破折号中的图时,除了轴和刻度标签。

我试过以下方法 - 编辑布局的宽度和高度 - 创建了一个只有图形对象的破折号服务器 - 运行 单独的图表 - 查看 plotly 主页上的图表表示

其他图表的数据有效并显示在相同的破折号中,但不是这个。

import plotly.plotly as py
import plotly.graph_objs as go
import numpy as np
from sklearn import linear_model

def create_tile_scatter_plot_figure():
    def data_to_plotly(x):
        k = []
        for i in range(0, len(x)):
            k.append(x[i][0])
        return k

    tiles = ['ALAÏA Vienne Laser-Cut Leather Tote',
             'AZZEDINE ALAÏA LASER-CUT KNITTED DRESS',
             'NEOPRENE SNEAKERS',
             'GRIP JACKET BLACK',
             'ORBIT PANT BLACK',
             'BLACK SHELL, MULTI FOX FUR',
             'LEATHER JACKET', 'LAUREN RALPH LAUREN Turtleneck Sweater',
             'Edwart Paris',
             'SG VARSITY POM BEANIE DARK BLUE',
             'Pro Longwear Foundation',
             'CHOCOLATE EYE PALETTE',
             'ALAÏA Laser-Cut Ankle Boots',
             'Mac 12 Lash',
             'Bobby Brown BUFF A Beige Pink Lipgloss',
             'ALAÏA Bracelet Leather Bucket Bag',
             'Bar 8 Mandarin Oriental Hotel',
             'Mandarin Hotel Paris', 'Grand Palais Paris']
    x_data = np.array([i + 1 for i in range(len(tiles))]).reshape(-1, 1)
    y_data = np.array([383, 367, 320, 318, 327, 420, 377, 303, 283, 302, 264, 257, 296,
                       317, 335, 302, 292, 297, 264]).reshape(-1, 1)
    tickvals = [i + 1 for i in range(len(tiles))]

    regr = linear_model.LinearRegression().fit(x_data, y_data)

    p1 = go.Scatter(x=data_to_plotly(x_data),
                    y=y_data,
                    mode='markers',
                    marker=dict(color='black')
                    )

    p2 = go.Scatter(x=data_to_plotly(x_data),
                    y=regr.predict(x_data),
                    mode='lines',
                    line=dict(color='blue', width=3)
                    )

    layout = go.Layout(title='Engagement by Tile',
                       paper_bgcolor='rgba(0,0,0,0)',
                       plot_bgcolor='rgba(0,0,0,0)',
                       width=1300,
                       height=800,
                       xaxis=dict(ticks='',
                                  ticktext=tiles,
                                  tickvals=tickvals,
                                  showgrid=False,
                                  showline=True,
                                  showticklabels=True,
                                  automargin=False,
                                  range=[0, len(tiles)+1]),
                       yaxis=dict(ticks='',
                                  showgrid=False,
                                  showline=True,
                                  showticklabels=False,
                                  automargin=True),
                       showlegend=False,
                       hovermode='closest')

    return go.Figure(data=[p1, p2], layout=layout)
app = dash.Dash(__name__)
app.layout = html.Div(id='main-container', children=[
    dcc.Graph(id='scatter-regression', figure=create_tile_scatter_plot_figure())]),
    ])
if __name__ == '__main__':
    app.run_server(debug=True)

我希望数据以破折号形式显示在图表上,但我看不到它。

您的 y-coordinates 格式有误。我建议你在你的分散创作中将它们展平,所以你改变:

y=y_data

y=y_data.flatten()

y=regr.predict(x_data)

y=regr.predict(x_data).flatten()