Вы можете сделать, например, это:
Создать пример x
и y
данных с массивом, содержащим условие, от которого будет зависеть цвет:
import numpy as np
x = [x for x in range(100)]
y = [3*each*np.random.normal(loc=1.0, scale=0.1) for each in range(100)]
condition = [np.random.randint(0,2) for x in range(100)]
Точки x
и y
, индекс которых соответствует 0
в массиве условий:
[eachx for indexx, eachx in enumerate(x) if condition[indexx]==0]
[eachy for indexy, eachy in enumerate(y) if condition[indexy]==0]
Если мы хотим, чтобы элементы в массивах x и y имели индекс, соответствующий на 1
в массиве условий мы просто изменим 0
на 1
:
[eachx for indexx, eachx in enumerate(x) if condition[indexx]==1]
[eachy for indexy, eachy in enumerate(y) if condition[indexy]==1]
В качестве альтернативы вы можете использовать zip
:
[eachx for eachx, eachcondition in zip(x, condition) if eachcondition==0]
И так для остальных.
Это понимание списка с условием, хорошо объясненным здесь: { ссылка }.
Затем построите 2 пары массивов с помощью 2 go.Scatter
звонки.
Все вместе:
import numpy as np
x = [x for x in range(100)]
y = [3*each*np.random.normal(loc=1.0, scale=0.1) for each in range(100)]
condition = [np.random.randint(0,2) for x in range(100)]
import plotly.graph_objects as go
fig = go.Figure()
fig.update_layout(width = 400, height = 400, template = 'plotly_white',xaxis_title = 'clump', yaxis_title = 'Unif Size')
fig.add_trace(go.Scatter(x = [eachx for indexx, eachx in enumerate(x) if condition[indexx]==0],
y = [eachy for indexy, eachy in enumerate(y) if condition[indexy]==0],
mode = 'markers',marker = dict(color = 'green')))
fig.add_trace(go.Scatter(x = [eachx for indexx, eachx in enumerate(x) if condition[indexx]==1],
y = [eachy for indexy, eachy in enumerate(y) if condition[indexy]==1],
mode = 'markers',marker = dict(color = 'yellow')))
fig.show()
Это даст вам:
То, что мы хотел, я верю.
Для преобразования в list
из столбца DataFrame
рекомендуем следующее: получить список из pandas столбца данных .