簡體   English   中英

更改 polty 中的默認符號序列

[英]Change default symbol sequence in plolty

如何更改 Plotly 中的默認符號序列? 我正在嘗試使用以下 MWE

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

my_template = pio.templates['ggplot2'] # Copy this template.
# Now modify some specific settings of the template.
my_template.data.scatter = [
    go.Scatter(
        marker = dict(size=22),
        symbol_sequence = ['circle', 'square', 'diamond', 'cross', 'x', 'star'],
    )
]
pio.templates.default = my_template # Set my template as default.

fig = px.line(
    data_frame = px.data.gapminder(),
    x = "year",
    y = "lifeExp",
    color = "country",
    symbol = "continent",
)

fig.show()

這引發了錯誤

ValueError: Invalid property specified for object of type plotly.graph_objs.Scatter: 'symbol'

我有plotly.__version__ == 5.3.1

我還注意到,在這個 MWE 中,默認標記大小由於某種原因不起作用,我插入的值被忽略。

您可以設置您想要的任何符號序列,然后使用 itertools cycle and next 與 fig.for_each_trace() 將它們應用於您的圖形:

new_symbols =  cycle(['pentagon', 'hexagram', 'star', 'diamond', 'hourglass', 'bowtie', 'square', 'diamond', 'cross', 'x'])
fig.for_each_trace(lambda t: t.update(marker_symbol = next(new_symbols)))

陰謀:

在此處輸入圖片說明

完整代碼:

import plotly.express as px
import plotly.graph_objects as go
from itertools import cycle

df = px.data.gapminder()
df = df.tail(100)
fig = px.line(
    data_frame = df,
    x = "year",
    y = "lifeExp",
    color = "country",
    symbol = "continent",
)

fig.update_traces(marker_size = 12)

new_symbols =  cycle(['pentagon', 'hexagram', 'star', 'diamond', 'hourglass', 'bowtie', 'square', 'diamond', 'cross', 'x'])
fig.for_each_trace(lambda t: t.update(marker_symbol = next(new_symbols)))

fig.show()

查看模板,模板本身似乎沒有標記大小或序列。 為什么不直接使用.update_traces()來調整標記大小,並將符號序列放在px.line()

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

my_template = pio.templates['ggplot2'] # Copy this template.
pio.templates.default = my_template # Set my template as default.

fig = px.line(
    data_frame = px.data.gapminder(),
    x = "year",
    y = "lifeExp",
    color = "country",
    symbol = "continent",
    symbol_sequence = ['circle', 'square', 'diamond', 'cross', 'x', 'star']

)

fig.update_traces(marker=dict(size=22))
fig.show()

原來的:

在此處輸入圖片說明

添加附加參數后:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM