如何在 plotly 中为 ticktext 着色?
How to color ticktext in plotly?
我想根据各自的字符串(基于字典)在我的 plotly xaxis 中用不同的颜色显示我的 ticktexts。
是否有 plotly 的功能可以通过 HTML 编码来做到这一点?
ticktext = ['<font color="red">{}</font> '.format(x) for x in ticktexts]
不起作用,它将 html 字符串提供给标签。
请看Albo的回答!
您可以通过更新 yaxis
或 xaxis
的 color
属性 来更改为单一颜色。颜色 属性 必须是单一颜色,因为它只接受解码为颜色的字符串。但是,您可以使用 Latex 格式更新图表的 ticktext
属性 来完成此操作。请参阅 Albo 的回答以了解如何执行此操作。
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()
文档
使用 LaTeX
的一些解决方法可以在这里帮助您(抱歉@Iwileczek,我盗用了您的示例,希望您不要介意)因为 plotly
有完整的 LaTeX
support:
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()
2021 年 3 月更新:
如果您不想在输出中使用 MathJax
渲染的 LaTex
字体,请使用带有 HTML 样式的@Dapcer 的解决方案:
def color(color, text):
return f"<span style='color:{str(color)}'> {str(text)} </span>"
fig.update_layout(font=dict(family="Times New Roman") [...]
示例:
HTML Albo 解决方案的替代方案:
我使用 并将 Latex 代码替换为 HTML 代码。相同的解决方案,但如果您不插入数学符号,请避免使用 Latex 字体。
只需替换
中的 Latex 代码
def color(color, text):
s = '$\color{' + str(color) + '}{' + str(text) + '}$'
return s
到HTML代码
def color(color, text):
# color: hexadecimal
s = "<span style='color:" + str(color) + "'>" + str(text) + "</span>$"
return s
我想根据各自的字符串(基于字典)在我的 plotly xaxis 中用不同的颜色显示我的 ticktexts。 是否有 plotly 的功能可以通过 HTML 编码来做到这一点?
ticktext = ['<font color="red">{}</font> '.format(x) for x in ticktexts]
不起作用,它将 html 字符串提供给标签。
请看Albo的回答!
您可以通过更新 yaxis
或 xaxis
的 color
属性 来更改为单一颜色。颜色 属性 必须是单一颜色,因为它只接受解码为颜色的字符串。但是,您可以使用 Latex 格式更新图表的 ticktext
属性 来完成此操作。请参阅 Albo 的回答以了解如何执行此操作。
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()
文档
使用 LaTeX
的一些解决方法可以在这里帮助您(抱歉@Iwileczek,我盗用了您的示例,希望您不要介意)因为 plotly
有完整的 LaTeX
support:
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()
2021 年 3 月更新:
如果您不想在输出中使用 MathJax
渲染的 LaTex
字体,请使用带有 HTML 样式的@Dapcer 的解决方案:
def color(color, text):
return f"<span style='color:{str(color)}'> {str(text)} </span>"
fig.update_layout(font=dict(family="Times New Roman") [...]
示例:
HTML Albo 解决方案的替代方案:
我使用
只需替换
中的 Latex 代码def color(color, text):
s = '$\color{' + str(color) + '}{' + str(text) + '}$'
return s
到HTML代码
def color(color, text):
# color: hexadecimal
s = "<span style='color:" + str(color) + "'>" + str(text) + "</span>$"
return s