使用Plotly Express更改线条颜色

19

我有一个Plotly Express图表:

fig = px.line(data, x="DateTime", y="Gold", title="黄金价格")

我想更改一些细节,就像这样:

fig.update_layout(
    line_color="#0000ff",  # ValueError: Invalid property specified for object of type plotly.graph_objs.Layout: 'line'
    line=dict(
        color='rgb(204, 204, 204)',
        width=5
    ),  # Bad property path: line
)

但是,我尝试了这里研究的两种解决方案,都失败了,错误信息在评论中给出。

我还尝试了fig = px.line(data, x="DateTime", y="Gold", title="Gold Prices", template="ggplot2", color_discrete_map={"Gold": "green"}),但也没用。

请问如何使其工作?

6个回答

17

尝试使用.update_traces()plotly.express代替.update_layout()

fig.update_traces(line_color='#0000ff', line_width=5)

5
请问当有多行时这个适用吗?如果是的话,如何设置它们? - Robin Andrews
适用于多行,但所有行似乎都有相同的颜色,不会将颜色列表作为输入(我只有一行,但是进行了行拆分)。使用下面r-beginners的索引系统。 - MichaelA

10

plotly.express

如果你想要使用 plotly.express,请添加以下设置。

import plotly.express as px

df = px.data.stocks()
fig = px.line(df, x='date', y="GOOG", title='Ticker:GOOG')

fig['data'][0]['line']['color']='rgb(204, 204, 204)'
fig['data'][0]['line']['width']=5

fig.show()

plotly.graph_objects

如果您正在使用plotly.graph_objects,请在go.Scatter()中进行设置。

import plotly.express as px
import plotly.graph_objects as go

df = px.data.stocks()
fig = go.Figure(data=go.Scatter(x=df['date'], y=df['GOOG'], mode='lines', line_color='rgb(204, 204, 204)', line_width=5))
fig.update_layout(title='Ticker:GOOG')

fig.show()

enter image description here


它们的输出相同,因此它们是一样的。 - r-beginners

3

您尝试过简单地...

fig.add_scattergl(x=xs, y=df.y, line={'color': 'black'})

Source


2

尝试使用 "set_color" 函数,方法如下:

fig.set_color('b')

或者

fig.set_color('g')

其中g和b也可以是RGB颜色方案中的r。 然后 fig.show()


目前您的回答表述不清楚。请编辑并添加更多细节,以帮助他人了解它如何解决所提出的问题。您可以在帮助中心找到有关编写优秀答案的更多信息。 - Community
1
对我不起作用:'Figure'对象没有'set_color'属性的属性错误。 - Robin Andrews

2
fig = px.line(data, x="DateTime", y="Gold", title="Gold Prices", color_discrete_map={"DateTime": "blue", "Gold": "green"})

请记住,Stack Overflow 不仅旨在解决当前的问题,还要帮助未来的读者找到类似问题的解决方案,这需要理解底层代码。对于我们社区中的初学者和不熟悉语法的成员来说,这尤其重要。鉴于此,您能否编辑您的答案,包括您正在做什么以及为什么您认为这是最好的方法的解释 - Jeremy Caney

0
这对我来说非常有效:

fig = px.line(
    data, 
    x="DateTime", 
    y="Gold", 
    title="Gold Prices",
    color_discrete_sequence=["rgb(204, 204, 204)"] # This parameter do the trick.
)


它还可以使用类似这样的方式工作:color_discrete_sequence=["black"]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接