在Dash散点图中如何为每个词典使用单独的名称?

时间:2018-07-12 21:29:55

标签: python plotly plotly-dash

我有一个数据结构,它是一个嵌套的字典,称为team_dict。 Team_dict看起来像这样:team_dict[teams][players][stats]

Team_dict = {'gs': {'Steph': {'PPG':26 ,'Reb':10 'Ast':10} }}

我遇到的问题是我可以很好地绘制所有数据,但我希望每个团队的标记颜色相同。我知道原因是因为我为每个玩家遍历了循环。现在,我的散点图代码是:

'data': [
    go.Scatter(
        x=[team_dict[i][p]['Salary']],
        y=[team_dict[i][p]['PPG']],
        text=p,
        mode='markers',
        opacity=0.7,
        marker={
            'size': 15,
            'line': {'width': .5, 'color': 'black'}
        },
        name= i,
    )
     for i in team_initials
         for p in team_dict[i]

],

这是现在的样子: scatterplot so far 我尝试查看破折号文档和其他方法,但似乎没有任何效果。我不应该使用嵌套词典来绘制虚线图吗?

1 个答案:

答案 0 :(得分:1)

为每个团队创建字典,例如:

team_colors = {'gs':'#E90', 'hou': '#555', 'LAC': '#FF0'}

然后,当您迭代时,通过调用color中的marker属性向散点图添加颜色。

'data': [
    go.Scatter(
        x=[team_dict[i][p]['Salary']],
        y=[team_dict[i][p]['PPG']],
        text=p,
        mode='markers',
        opacity=0.7,
        marker={
            'size': 15,
            'line': {'width': .5, 'color': 'black'},
            'color':team_color[i]  # looks like you iterate through team names
        },
        name= i,
    )
     for i in team_initials
         for p in team_dict[i]

],

这应该使同一支球队的比赛具有相同的颜色。最好将嵌套的词典转换为pandas数据框并一次传递整个团队,然后仅调用您想要的列"Salary""PPG"。您可以使用this post向您展示如何从嵌套字典中制作数据框。