当前位置: 首页 > 知识库问答 >
问题:

散点图没有以破折号绘制

梁丘逸仙
2023-03-14

我正在绘制一个仪表板,在一个散点图中有多个x特征,每个特征要么显示为直线,要么显示为带标记的直线。

我已经根据我指定的要求构建了散点图,但是,当我在本地运行仪表板时,实际上看不到散点图

这是我写的代码

import dash
import dash_table
import plotly.graph_objs as go
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input,Output
import pandas as pd
import os
import numpy as np
app = dash.Dash()
app.layout = html.Div(children=[
    dcc.Graph(
        id='supervisor'
    )
    ])
@app.callback(dash.dependencies.Output('supervisor','figure'))
def scattertable():
    trace0 = go.Scatter(
        x=supervisor['Características (D)'],
        y=supervisor['Mean Team Performance'],
        mode='lines',
        name='Caracteristicas (D)'
    )
    trace1 = go.Scatter(
        x=supervisor['Características (I)'],
        y=supervisor['Mean Team Performance'],
        mode='lines+markers',
        name='Características (I)'
    )
    trace2 = go.Scatter(
        x=supervisor['Características (S)'],
        y=supervisor['Mean Team Performance'],
        mode='lines',
        name='Características (S)'
    )
    trace3 = go.Scatter(
        x=supervisor['Características (C)'],
        y=supervisor['Mean Team Performance'],
        mode='lines+markers',
        name='Características (C)'
    )
    data = [trace0,trace1,trace2,trace3]
    return {"data": data,
            "layout": go.Layout(title="Relationship",
                                yaxis={"title":'Mean', "range":[0, max(supervisor['Mean Team Performance'])+1]},
                                xaxis={"title":'Characteristics', "tickangle":45}, )}

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

这是我的数据样本

{'Características (D)': {2373: nan, 2361: 67.0, 2349: 65.0},
 'Características (I)': {2373: nan, 2361: 20.0, 2349: 55.0},
 'Características (S)': {2373: nan, 2361: 48.0, 2349: 30.0},
 'Características (C)': {2373: nan, 2361: 90.0, 2349: 85.0},
 'Motivación (D)': {2373: nan, 2361: 69.0, 2349: 59.0},
 'Motivación (I)': {2373: nan, 2361: 25.0, 2349: 58.0},
 'Motivación (S)': {2373: nan, 2361: 65.0, 2349: 30.0},
 'Motivación (C)': {2373: nan, 2361: 84.0, 2349: 93.0},
 'Bajo Stress (D)': {2373: nan, 2361: 69.0, 2349: 69.0},
 'Bajo Stress (I)': {2373: nan, 2361: 30.0, 2349: 60.0},
 'Bajo Stress (S)': {2373: nan, 2361: 40.0, 2349: 40.0},
 'Bajo Stress (C)': {2373: nan, 2361: 92.0, 2349: 74.0},
 'Cost to Company': {2373: 1908.33, 2361: 1908.33, 2349: 1908.33},
 'MonthsofEmploymentRounded': {2373: 1.0, 2361: 4.0, 2349: 4.0},
 'Compensation': {2373: 1200.0, 2361: 1200.0, 2349: 1200.0},
 'span': {2373: 37.0, 2361: 58.0, 2349: 86.0},
 'Mean Team Performance': {2373: 0.40544395205206984,
  2361: 0.5936947689016717,
  2349: 0.5403025332663768},
 'Mean Team Employment in Months': {2373: 8.675675675675675,
  2361: 5.396551724137931,
  2349: 6.174418604651163},
 'employment span': {2373: 43, 2361: 128, 2349: 128}

}

共有1个答案

端木兴国
2023-03-14

Dash需要输入才能成功进行回调。如果只想生成Plotly散点图,则不需要回调,只需将代码放入应用程序布局即可。我还将您的字典转换为熊猫数据框,用于创建情节。

更新代码如下:

import dash
import dash_table
import plotly.graph_objs as go
import dash_html_components as html
import dash_core_components as dcc
from dash.dependencies import Input,Output
import pandas as pd
import os
import numpy as np

supervisor_df = pd.DataFrame.from_dict(supervisor)
fig = go.Figure()
category_dict = {'Características (D)':'lines',
                 'Características (I)':'lines+markers',
                 'Características (S)':'lines',
                 'Características (C)':'lines+markers'}
for category in category_dict.keys():
    fig.add_trace(go.Scatter(
        x=supervisor_df[category],
        y=supervisor_df['Mean Team Performance'],
        mode=category_dict[category],
        name=category
    ))
fig.update_layout(title="Relationship",
            yaxis={"title":'Mean', "range":[0, max(supervisor_df['Mean Team Performance'])+1]},
            xaxis={"title":'Characteristics', "tickangle":45}, )
app = dash.Dash()
app.layout = html.Div(children=[
    dcc.Graph(
        id='supervisor',
        figure=fig.to_dict()
    )
])

if __name__ == '__main__':
        app.run_server(debug=True)
 类似资料:
  • 我是Dash的新手,在尝试基于范围滑块的范围/值进行可视化筛选时遇到了一些问题。我已经附加了我下面使用的代码块,但我似乎无法开始工作。我已经看了留档,但不知道这个问题是否与RangeSliders有关,或者只是我如何尝试通过“和”命令过滤数据框。

  • 我的dash应用程序具有基于可用dash留档中找到的食谱的导航。它的工作原理,但它不好看。谁知道介绍菜单的更好方法?我不想开发一个特殊的流星组件,但我很乐意使用目前可用的框架之一(引导,语义学,...)。

  • 这是如何与datetime一起工作的?我不能绘图日期时间x日期时间对象?这个问题是由于在y轴上绘制“小时/分钟”时的一些问题,它变得混乱。 在这个例子中,我的小时图从11:13开始,到10:54结束,但是范围是08:33到11:55 在matplotlib中打印时,它可以识别范围(我想要的),但在dash中,它会创建一个从最低值到最高值的阶梯 是的,我已经尝试过'yax':{tickform:'%

  • 我正试图用Dash构建一个仪表板,它由一系列图块(文本)组成,如下图所示。 我试图构建一个组件来重用它,并构建下面的布局。每个框将包含标题、值和描述,如下所示。 有可用的组件吗?有人可以帮助我任何基本的想法/代码? 提前谢谢!

  • 我在Dash中有一个散点图,其中文本属性(设置悬停显示的文本)被设置为从数据框中的某个列获取文本。 问题是一些悬停文本太长,会离开页面。有没有办法给悬停长度一个固定的长度,这样就不会发生这种情况? 我看到过使用数字数据的hoverformat来实现这一点。但我的悬停信息是文本。

  • 我将按照dash wind流媒体示例从MySQL数据库中流式传输数据。每5秒向数据库添加一次数据,并分别进行查询。我使用Interval组件进行查询,并使用隐藏的div进行存储。我将回调函数中的jsonified数据读入名为df的数据帧。 我使用以下命令生成跟踪: