26 July 2020

Plotly: маркеры, линии и легенды

Продолжим играться с Plotly. Теперь посмотрим как можно поменять стиль линий и маркеров.
Управляет стилием отображения ключ словаря mode. Три основных варианта такие:
- markers  - чисто маркеры
- lines  - чисто линии
- markers+lines - маркеры + линии

Рассмотрим на примере, сначала отобразим чисто маркеры:

trc1 = dict( x = x, y = y )
trc1['name'] = 'Model data'
trc1['type'] = 'scatter' ; trc1['mode']='markers' # чисто маркеры
fig.add_trace ( trc1 )


Вот что у нас получится:


Как можно видеть, мы видим только маркеры. График только один и легенда не отображается.
Однако ничего не мешает и ее отобразить:

fig.update_layout(showlegend=True)


Этот вызов сформирует еще один график и уже с легендой:


Теперь попробуем поиграть с маркерами и для этого зададим режим "линия+маркеры" и сделаем линию черной.
Атрибут для линии - line - представляется в виде словаря, поэтому атрибут color уазазывается уже в нем.
Также изменим легенду:

trc1['mode']='markers+lines'
trc1['line'] =dict(color= 'black') 

trc1['name'] = 'Black lines + markers data'
fig.add_trace ( trc1 )


Во что будет после выполнения:


Как можно видеть, новый график перетер старый, однако это совершенно не страшно - панель легенды интерактивная. Т.е. можно выделить нужные нам графики. Например, вот я выделяю предыдущие данные - Model Data - и пропускаю черный график ( при этом он будет подписан более светлым шрифтом, что означает, что он не выделен ):


Т.е. в случае Plotly можно также идти последовательно добавляя все новые диаграммы, и просто выделять именно их при отображении. Чтобы не запутаться, имеет смысл менять при этом легенду.

Следующим шагом поиграемся с видом маркера. Для изменения вида маркера используется ключ marker_symbol, значение diamond-open означает алмаз без заливки. Для изменения цвета, размеров и толщины применяется ключ marker который задается опять словарем в котором цвет идет по ключу color, размер по ключу size, а вот толщину линии надо опять задавать через словарь

trc1['marker_symbol'] ='diamond-open' 
trc1['name'] = 'Diamond markers data'
trc1['marker'] = dict( line= dict(width= 1), color= 'red', size= 8)
fig.add_trace ( trc1 )


Вот что получается после этого выполнения:


Как можно видеть маркеры теперь стали в виде красных алмазов.

Далее поиграемся со стилем линии, пусть теперь мы будем без маркеров и с пунктирной синей линией.
Стиль линии определяется ключом line который имеет тип словаря:

trc1['line'] = dict(color= 'blue', dash='dot')
trc1['name'] = 'Blue dash lines data'
trc1['mode'] = 'lines'
fig.add_trace ( trc1 )


Вот что получится:


Ровно тоже самое можно сделать и при создании посредством использования не словаря, а через go.Scatter:

trc2 = go.Scatter( x = x, y = y, name = 'Scatter sample' )
trc2['line'] =dict(color= 'green', dash='dot')
trc2['marker_symbol']='diamond-open'
trc2['mode']='markers+lines'
fig.add_trace ( trc2 )


Вот результат:


Как можно видеть, цвет линии используется и маркерами, если не задавать их персонально.

No comments:

Post a Comment