将特定的刻度标签设置为格式破折号

问题描述 投票:1回答:1

我正在热图上绘制一些地区指标,我想通过在y轴上将它们涂成红色来突出显示所选地区(y轴上的每个刻度都是一个地区名称)。我知道在matplotlib中您可以遍历每个刻度,但是在这里我什么也没找到。有什么办法可以做到?

我的代码的相关部分是这一段:

colors = ['black']*len(ranking)
idx = (ranking[ranking.district.isin(selected_districts)]).index.values
for i in idx:
    colors[i] = 'red'
fig.update_yaxes(color=colors)

由于颜色不接受数组,因此我的方法无效。有什么办法可以使用较低级别的API来实现这一目标?我知道这不是一个可复制的示例,但是我的问题是非常通用且与数据无关的,但是如果需要,我可以添加一个。

编辑:

工作示例:

import plotly.figure_factory as ff
y = ['1a', '2b', '3c']
x = [1, 2]
z = [[3,4],[5,7],[8,9]]
fig = ff.create_annotated_heatmap(x=x, y=y, z=z)

假设我想将2b打勾红色。我该怎么办?

python plotly plotly-dash
1个回答
0
投票

这可能(至少在jupyter中使用tickmode = 'array'ticktext包含一些乳胶,请参阅here了解更多信息。

import plotly.figure_factory as ff
y = ['1a', '2b', '3c']
x = [1, 2]
z = [[3,4],[5,7],[8,9]]
fig = ff.create_annotated_heatmap(x=x, y=y, z=z)

fig.update_layout(
    yaxis = dict(
        tickmode = 'array',
        tickvals = ['1a', '2b', '3c'],
        ticktext = ["$\color{blue}{\t{1a}}$","$\color{red}{\t{2b}}$","$\color{green}{\t{3d}}$"]
    )
)

fig.show()
print(fig)

此外,如果您只希望它们全部变红,则可以使用tickprefixticksuffix(也使用乳胶):

fig.update_yaxes(tickprefix="$\color{red}{\t{", ticksuffix="}}$")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.