Плотная группировка, настройка ширины и раскраска линий вручную - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть 3D-матрица, представляющая набор моделей ансамбля в форме Ансамбль x Компонент ансамбля x Список значений по оси Y. Я хочу иметь возможность построить все линии, принадлежащие одному ансамблю, как один цвет и появиться как один элемент в легенде, но с их шириной, определенной вручную, как значения, отличные от другого массива, который я ввожу. Прямо сейчас я могу делать цвета и толщину + непрозрачность вручную, но не легенду, и я не могу понять, как группировать по легенде наряду со всеми другими вещами, которые я делаю в ploty, ниже приведен пример типа графика, который я хочу за исключением того, что мне нужны все синие линии под одной записью в легенде и все желтые линии под другой. И вот мой код, пока, в идеале, я не хочу вручную назначать цвета, обратите внимание, что моя матрица сейчас сглажена, так что первые два измерения объединены, а затем я использую colours, который имеет вид [0, ..., 0, 1, ..., 1, ...] для определения срезов каждого ансамбля:

def create_cluster_ensemble_plot(matrix, opacity, colours, scale="linear") -> Figure:
    x = np.arange(clustered_data.shape[1])
    lines = [go.Scatter(x=x, y=clustered_data[i], showlegend=False, legendgroup=colours[i], line=dict(color=all_colours[colours[i]], width=opacity[i] / opacity.min()), mode="lines", opacity=opacity[i]) for i in range(clustered_data.shape[0])]
    fig = go.Figure(
        data=lines,
    )
    fig.update_traces(hovertemplate=None, hoverinfo='none')
    fig.update_xaxes(fixedrange=True, showspikes=True, spikemode='across', spikesnap="cursor", spikedash='solid', spikethickness=2, spikecolor='grey')
    fig.update_yaxes(fixedrange=True)
    fig.update_layout(yaxis_type=scale, hovermode="x", spikedistance=-1)
    return fig

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...