Python - 按标签

时间:2018-04-17 19:13:19

标签: python plotly

我试图复制Plotly R中的一个基本示例 https://plot.ly/r/line-and-scatter/#qualitative-colorscales 进入Plotly Python。 但发现它是不可能的。

这里的R也解决了同样的问题: Plotly assigning colors based on label

```

trace0 = go.Scatter( x = x1, y = y1, mode = 'markers',
                    name = ytitle +  ' X vs ' + Atitle, 
                    marker=dict(size=4, symbol='circle', 
                                color=colorsIdx, colorbar= go.ColorBar(title= 'colorbar'),
                            colorscale='Viridis')
                    )

```

我最接近的是使用了一个颜色条,但这不是最理想的,因为我无法弄清楚如何选择颜色以便它们不会混合在一起,然后颜色图例会使图表看起来像是一些连续的数据,但事实并非如此。

1 个答案:

答案 0 :(得分:5)

使用字典并相应地映射颜色:

import pandas as pd 
import plotly.plotly as py
import plotly.graph_objs as go

d  = {'x': [1, 2, 3], 'y': [3, 4, 5], 'z': ['A', 'B', 'A']}
df = pd.DataFrame(data=d)

colorsIdx = {'A': 'rgb(215,48,39)', 'B': 'rgb(215,148,39)'}
cols      = df['z'].map(colorsIdx)

# Create a trace
trace = go.Scatter(
    x = df.x,
    y = df.y,
    mode = 'markers',
    marker=dict(size=15, color=cols)
)

data = [trace]
py.iplot(data)

enter image description here