plotly.py: изменить непрозрачность линии, оставить маркеры непрозрачными - PullRequest
0 голосов
/ 23 мая 2018

Можно ли изменить непрозрачность линии, но не непрозрачность маркера?Я обнаружил, что могу установить непрозрачность всей линии, включая маркеры (opacity = .5) и маркер (например, marker={"opacity":1}).

Как показано в этом примере:

import plotly
import plotly.graph_objs as go
plotly.offline.init_notebook_mode(connected=True)  # I'm running in a jupyter notebook

x = np.arange(0,10)
ys = [np.random.rand(10) for _ in range(3)]

lines = []
for y in ys:
    line = go.Scatter(x=x, y=y, mode="markers+lines", opacity=.5, marker={'symbol': 'x', 'size': "15", "opacity":1})
    lines.append(line)           
fig = go.Figure(
    data=lines,
    layout=go.Layout(showlegend=True)
)
plotly.offline.iplot(fig)

См. Результат здесь: current result

Моя проблема заключается в следующем: мои данные важны, линии - просто визуальное пособие.Я хочу, чтобы линии .5 были непрозрачными, но маркеры были полностью непрозрачными.
Однако, когда я установил opacity=.5, marker={'opacity':1}, непрозрачность маркера также уменьшается.(Я полагаю, что непрозрачность маркера определяется в диапазоне [0, line-opacity].

. Можно ли каким-либо образом получить цвет линии и настроить ее непрозрачность (возможно, даже после создания линии, но перед построением графика)это). Я знаю, что мог бы создать две трассы, одну с точками, а другую с линиями. Однако мне бы хотелось, чтобы они были одного цвета без необходимости вручную указывать цвета. (Количество трасс варьируется, поэтомуЯ предпочитаю придерживаться стандартного механизма, который назначает разные цвета)

EDIT : Мое текущее решение состоит в том, чтобы установить ширину линии равной 0,5, чтобы она выглядела лучше,но очевидно, что это решение работает для меня и может быть бесполезным для людей, которые хотят жирные и менее непрозрачные линии.

EDIT : проблема Github, касающаяся этой проблемы / запроса / поведения функции: https://github.com/plotly/plotly.js/issues/2684

1 Ответ

0 голосов
/ 30 мая 2018

Линейные объекты не имеют атрибутов opacity , но вы можете назначить цвета, используя RGBA и установить альфа.Вы должны назначить цвет для маркеров , используя RGBA , или он будет наследоваться от линии.

См. Следующий пример:

import plotly
import numpy as np
import plotly.graph_objs as go

plotly.offline.init_notebook_mode(connected=True)
x = np.arange(0,10)
ys = [np.random.rand(10) for _ in range(3)]

lines = []
dots = []
for y in ys:
    my_color = ('rgba('+str(np.random.randint(0, high = 256))+','+
                str(np.random.randint(0, high = 256))+','+
                str(np.random.randint(0, high = 256)))
    line = go.Scatter(
            x=x, 
            y=y, 
            mode="lines+markers", 
            marker={ 
                    'symbol': 'x', 
                    'size': "15", 
                    'color':my_color+',1)'
                    },
            line={
                "color":my_color+',0.2)'
            }
            )
    lines.append(line)  
fig = go.Figure(
    data=lines,
    layout=go.Layout(showlegend=True)
)
plotly.offline.iplot(fig)

enter image description here

...