首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用plotly.graph_objects.Scatter绘图时,如何使用列作为颜色维度?

用plotly.graph_objects.Scatter绘图时,如何使用列作为颜色维度?
EN

Stack Overflow用户
提问于 2020-03-31 05:39:35
回答 1查看 226关注 0票数 0

在用plotly express绘图时,我可以很容易地使用列作为颜色变量,但在plotly.graph_objects.Scatter中很难做到同样的事情。另外,所有的线路都是连接的,如何将它们分开?

代码语言:javascript
运行
复制
import plotly.express as px
import plotly.graph_objects as go
import numpy as np
import pandas as pd

x_values = range(1, 11)
y_values = ['a', 'b', 'c']

xs, ys, zs = [], [], []

for y in y_values:
    for x in x_values:
        #print(x, y)
        xs.append(x)
        ys.append(y)
        zs.append(np.random.rand())
d = pd.DataFrame({'x': xs, 'y': ys, 'z': zs})

px.line(d, x='x', y='z', color='y')


fig = go.Figure(data=go.Scatter(
    x=d['x'],
    y=d['y'],
    mode='lines'
))

fig.show()

编辑:我知道我们可以对行使用不同的跟踪,但我真的希望复制Plotly Express可以做的事情。

EN

回答 1

Stack Overflow用户

发布于 2020-03-31 11:05:11

在这里,您应该像pd.pivot_table一样将df的长度转换为宽度,并为所需的每一列添加一个跟踪。

代码语言:javascript
运行
复制
import plotly.express as px
import plotly.graph_objects as go
import numpy as np
import pandas as pd

x_values = list(range(1, 11))
y_values = ['a', 'b', 'c']
df = pd.DataFrame({"x":x_values*len(y_values),
                   "y":np.repeat(y_values,len(x_values)),
                   "z":np.random.rand(len(x_values)*len(y_values))})

# px.line(df, x='x', y='z', color='y')

# long 2 wide
pv = pd.pivot_table(df,
                    index = "x",
                    columns="y",
                    values = "z")\
       .reset_index()

fig = go.Figure()
for col in pv.columns[1:]:
    fig.add_trace(go.Scatter(
        x=pv['x'],
        y=pv[col],
        mode='lines',
        name=col
    ))

fig.show()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60939958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档