Многоцветные маркеры matplotlib

#python #python-3.x #matplotlib #matplotlib-basemap

#python #python-3.x #matplotlib #matplotlib-базовая карта

Вопрос:

Я пытаюсь создать временную шкалу событий, в которой на некоторые события влияют другие события на временной шкале,

Я хочу использовать сплошные и многоцветные маркеры, чтобы я мог знать, какое событие было вызвано другими событиями,

таким образом, на моей временной шкале будут маркеры разных цветов, например —

синий, черный, синий, сине-черный, оранжевый, оранжево-синий, оранжево-сине-черный, черный, синий

Я использую функцию для выбора цветов по значению, но только по одному цвету за раз, что в моем случае бесполезно.

функция, которую я использую —

 def SetColor(x):
    if(x <= 3):
        return "green"
    elif(x == 5):
        return "red"
    elif(x>=10):
        return "black"
  

мой код до сих пор —

 fig = go.Figure(data = [go.Scatter(
    y = [0 for l in range(52)],
    x = time_line,
    text = label_fig,
    mode = 'markers',
    marker = dict(
        size = stages_fig,
        color = list(map(SetColor, stages_fig)),
        sizemode = 'area',
        sizeref = 2.*max([10])/(40.**2),
        sizemin = 1
    )
)])
fig.update_yaxes(title="POC", visible=True, showticklabels=False)
fig.show()
  

Комментарии:

1. В этом примере из официальных документов показаны маркеры в виде маленьких круговых диаграмм.

2. Я видел этот пример, но я не уверен, как использовать его для определения функции, которая, согласно моим данным, создает сплошные и многоцветные маркеры.

Ответ №1:

Вы можете создать функцию, которая сопоставляет ваше значение с цветом следующим образом:

 def set_color(value):
    color_dict = {**{value: "green" for value in range(0,4)}, **{value: "green-red" for value in range(4,5)}, **{value: "red" for value in range(5,6)}, **{value: "red-black" for value in range(6,10)}} # can modify colors, values in color_dict
    return "black" if value >= 10 else color_dict.get(value, "white") # can put some other value than "white"
  

Комментарии:

1. проблема в том, что формат «color-other_color» не является допустимым вводом цвета для matplotlib, свойство ‘color’ является цветом и может быть указано как: — шестнадцатеричная строка (например, ‘# ff0000’) — Строка rgb / rgba (например, ‘rgb (255,0,0)’) -Строка hsl / hsla (например, ‘hsl(0,100%,50%)’) — Строка hsv / hsva (например, ‘hsv(0,100%,100%)’) — Именованный цвет CSS: aliceblue, antiquewhite, aqua, аквамарин, лазурный, бежевый, коричневый, черный… — Число, которое будет интерпретироваться как цвет в соответствии с scatter.marker.colorscale — список или массив любого из вышеперечисленных