创建图形后破折号更新颜色
Dash update colors after figure is created
如果我像这样创建一个情节表达的图形:
fig = px.line(data, color_discrete_map={"Gold": "gold","Silver": "silver"})
,
它工作正常。
但是如果我想在创建图形后更新颜色,就像这样:
fig = px.line(data)
fig.update_layout(color_discrete_map={"Gold": "gold", "Silver": "silver"})
我明白了
AttributeError: 'Figure' object has no attribute 'color'
我也试过 update_traces()
但没有成功。
请问正确的做法是什么?
当您使用 plotly.express 创建图形时,您会收到一个 plotly.graph_objs 图形。
您可以传递参数 color_discrete_map,它在 express figure 的构造函数中用于设置不同线条的颜色,但之后您只能通过它们的 plotly.graph_objects 属性来更改它们。
当你这样做时,它变得更加清晰:
fig1 = px.line(data, color_discrete_map={"Gold": "gold","Silver": "silver"})
fig2 = px.line(data)
print(fig1)
print(fig2)
您必须更改相应行的 line_color 属性。一个解决方案可能是这样做:
import plotly.express as px
import pandas as pd
data = pd.DataFrame({"Gold":[1, 2, 3], "Silver":[2, 1, 3]})
fig = px.line(data)
colors = {"Gold":"gold", "Silver":"silver"}
for linename, linecolor in colors.items():
for figline in fig.data:
if figline.name == linename:
figline.line.color = linecolor
fig.show()
如果我像这样创建一个情节表达的图形:
fig = px.line(data, color_discrete_map={"Gold": "gold","Silver": "silver"})
,
它工作正常。
但是如果我想在创建图形后更新颜色,就像这样:
fig = px.line(data)
fig.update_layout(color_discrete_map={"Gold": "gold", "Silver": "silver"})
我明白了
AttributeError: 'Figure' object has no attribute 'color'
我也试过 update_traces()
但没有成功。
请问正确的做法是什么?
当您使用 plotly.express 创建图形时,您会收到一个 plotly.graph_objs 图形。 您可以传递参数 color_discrete_map,它在 express figure 的构造函数中用于设置不同线条的颜色,但之后您只能通过它们的 plotly.graph_objects 属性来更改它们。
当你这样做时,它变得更加清晰:
fig1 = px.line(data, color_discrete_map={"Gold": "gold","Silver": "silver"})
fig2 = px.line(data)
print(fig1)
print(fig2)
您必须更改相应行的 line_color 属性。一个解决方案可能是这样做:
import plotly.express as px
import pandas as pd
data = pd.DataFrame({"Gold":[1, 2, 3], "Silver":[2, 1, 3]})
fig = px.line(data)
colors = {"Gold":"gold", "Silver":"silver"}
for linename, linecolor in colors.items():
for figline in fig.data:
if figline.name == linename:
figline.line.color = linecolor
fig.show()