Как покрасить текст в сюжет? - PullRequest
1 голос
/ 01 октября 2019

Я хотел бы отобразить свои текстовые сообщения в моем сюжетном xaxis с разными цветами на основе соответствующей строки (на основе словаря). Есть ли в сюжете функциональность, позволяющая это сделать, может быть, с помощью HTML-кодирования?

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

не работает, он дает строку html меткам.

Ответы [ 2 ]

4 голосов
/ 01 октября 2019

Небольшой обходной путь с использованием 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()

enter image description here

3 голосов
/ 01 октября 2019

Пожалуйста, смотрите ответ Альбо!


Вы можете изменить цвет на один, обновив свойство color yaxis или xaxis. Свойство color должно быть одного цвета, так как оно принимает только строки, которые декодируются в цвета. Однако вы можете обновить свойство ticktext диаграмм с помощью латексного форматирования для достижения этой цели. Пожалуйста, посмотрите ответ Альбо, чтобы узнать, как это сделать.

    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()

enter image description here

Документация

...