如何在plotly中为ticktext着色?

Max*_*axS 5 python plot axis-labels plotly

我想根据相应的字符串(基于字典)在我的绘图 xaxis 中使用不同的颜色显示我的刻度文本。是否有一个功能可以做到这一点,也许是通过 HTML 编码?

 ticktext = ['<font color="red">{}</font> '.format(x) for x in ticktexts]
Run Code Online (Sandbox Code Playgroud)

不起作用,它将 html 字符串提供给标签。

Alb*_*lbo 10

LaTeX在这里使用一些解决方法可以帮助你(抱歉@Iwileczek,我偷了你的例子,希望你不要介意)因为plotly有全力LaTeX 支持

def color(color, text):
    s = '$\color{' + str(color) + '}{' + str(text) + '}$'
    return s

animals=['giraffes', 'orangutans', 'monkeys']

colors = ['red', 'green', 'yellow', 'blue']
ticks = [5, 10, 15, 20]
keys = dict(zip(ticks, colors))

fig = go.Figure([go.Bar(x=animals, y=[20, 14, 23])])
ticktext = [color(v, k) for k, v in keys.items()]
print(ticktext)
fig.update_layout(
yaxis=dict(tickmode='array', ticktext=ticktext, tickvals=ticks)
)
fig.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


2021 年 3 月更新

如果您不想在输出中使用LaTex渲染字体MathJax,请使用带有 HTML 样式的@Dapcer 解决方案:

def color(color, text):
    s = '$\color{' + str(color) + '}{' + str(text) + '}$'
    return s

animals=['giraffes', 'orangutans', 'monkeys']

colors = ['red', 'green', 'yellow', 'blue']
ticks = [5, 10, 15, 20]
keys = dict(zip(ticks, colors))

fig = go.Figure([go.Bar(x=animals, y=[20, 14, 23])])
ticktext = [color(v, k) for k, v in keys.items()]
print(ticktext)
fig.update_layout(
yaxis=dict(tickmode='array', ticktext=ticktext, tickvals=ticks)
)
fig.show()
Run Code Online (Sandbox Code Playgroud)

示例fig.update_layout(font=dict(family="Times New Roman") [...]在此处输入图片说明

  • 我将其称为解决方案而不是解决方法! (5认同)

小智 7

Albo 解决方案的 HTML 替代方案:

我使用了Albo 的解决方案,并用 HTML 代码替换了 Latex 代码。相同的解决方案,但如果您不插入数学符号,则避免使用 Latex 字体。

只需将 Latex 代码替换为

def color(color, text):
    s = '$\color{' + str(color) + '}{' + str(text) + '}$'
    return s
Run Code Online (Sandbox Code Playgroud)

到 HTML 代码

def color(color, text):
    # color: hexadecimal
    s = "<span style='color:" + str(color) + "'>" + str(text) + "</span>$"
    return s
Run Code Online (Sandbox Code Playgroud)


lwi*_*zek 6

请看阿尔博的回答!


您可以通过更新或color的属性来更改为单一颜色。颜色属性必须是单一颜色,因为它只接受解码为颜色的字符串。但是,您可以使用 Latex 格式更新图表的属性来实现此目的。请参阅 Albo 的答案以了解如何执行此操作。yaxisxaxisticktext

    import plotly.graph_objects as go
    animals=['giraffes', 'orangutans', 'monkeys']

    fig = go.Figure([go.Bar(x=animals, y=[20, 14, 23])])
    fig.update_layout(
    yaxis=dict(color="#E90")

    )
    fig.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

文档