Как стилизовать / отформатировать точечные маркеры в диаграмме рассеяния?
Я не уверен, как настроить стили маркеров диаграммы рассеяния в диаграммах рассеяния.
Конкретно у меня есть столбец predictions
то есть 0 или 1 (1 представляет неожиданное значение), и хотя я использовал symbol
параметр в px.scatter_3d, чтобы указать неожиданное значение с помощью различной формы точки (ромб для 1 и круг для 0), разница очень тонкая, и я хочу, чтобы она была более резкой. Я представлял себе что-то вроде того, что показано ниже (не обязательно, чтобы это было именно так), но что-то вдоль линий точек в форме ромба имеет другой цвет контура или дополнительную форму / пузырь вокруг. Как бы я это сделал?
Кроме того, у меня есть set
столбец, который может принимать одно из двух значений: набор A или набор B. Я использовал параметр цвета внутри px.scatter_3d
и сделал это равным set
поэтому точки окрашиваются в соответствии с набором, из которого они получены. Пока он выполняет то, что я просил, я хочу, чтобы цвета были не синим и красным, а двумя указанными мной цветами. Как я могу это сделать (скажем, я хочу, чтобы вместо этого были синие и оранжевые цвета)? Спасибо большое!
Вот код, который я использовал:
fig = px.scatter_3d(X_combined, x='x', y='y', z='z',
color='set', symbol='predictions', opacity=0.7)
fig.update_traces(marker=dict(size=12,
line=dict(width=5,
color='Black')),
selector=dict(mode='markers'))
1 ответ
Вы можете использовать несколько go.Scatter3d()
операторов и соберите их в список, чтобы отформатировать каждый сегмент или крайние значения более или менее точно так, как вам нужно. Это может быть немного сложнее, чем использованиеpx.scatter_3d()
, но это даст вам больше контроля. Следующий сюжет создается приведенным ниже фрагментом:
Участок:
Код:
import plotly.graph_objects as go
import numpy as np
import pandas as pd
# sample data
t = np.linspace(0, 10, 50)
x, y, z = np.cos(t), np.sin(t), t
# plotly data
data=[go.Scatter3d(x=[x[2]], y=[y[2]], z=[z[2]],mode='markers', marker=dict(size=20), opacity=0.8),
go.Scatter3d(x=[x[26]], y=[y[26]], z=[z[26]],mode='markers', marker=dict(size=30), opacity=0.3),
go.Scatter3d(x=x, y=y, z=z,mode='markers')]
fig = go.Figure(data)
fig.show()
Как вы определяете различные сегменты, будь то максимальные или минимальные значения, полностью зависит от вас. В любом случае, надеюсь, этот подход будет вам полезен!