我试图复制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')
)
```
我最接近的是使用了一个颜色条,但这不是最理想的,因为我无法弄清楚如何选择颜色以便它们不会混合在一起,然后颜色图例会使图表看起来像是一些连续的数据,但事实并非如此。
答案 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)