Различные непрерывные цветные полосы для разных классов Python - PullRequest
1 голос
/ 12 апреля 2020

У меня есть точки данных, которые принадлежат трем различным классам. С другой стороны, у меня есть вес для каждой точки данных в своем классе. Я хочу раскрасить свои очки в зависимости от их веса, но с тремя разными непрерывными диапазонами цветов. На самом деле я хочу что-то вроде следующего изображения (которое сделано вручную). Сейчас я использую Plotly для раскраски, но приветствуется любой другой метод, совместимый с python.

enter image description here

На самом деле я хочу объединить два вывода кода:

if __name__ == '__main__':
n_data = 100
n_class = 3
t1 = [random.random() for i in range(n_data)]
t2 = [random.random() for i in range(n_data)]
class_color = [str(random.randint(1,n_class)) for i in range(n_data)]
weight_color = [random.random() for i in range(n_data)]
df = pd.DataFrame()
print(len(t1))
print(len(t2))
df['x'] = t1
df['y'] = t2
df['class_color'] = class_color
df['weight_color'] = weight_color
fig1 = px.scatter(df, x="x", y="y", color="class_color")
fig1.show()

fig2 = px.scatter(df, x="x", y="y", color="weight_color")
fig2.show()

1 Ответ

1 голос
/ 12 апреля 2020

Пожалуйста, не принимайте это как ответ (пока). Насколько я вижу, вы можете использовать разные цветовые гаммы с сюжетом. Но вы должны поработать над тем, как правильно показать все легенды

import plotly.graph_objects as go
import plotly.express as px
df = px.data.iris()
dfs = [d[1] for d in list(df.groupby('species'))]

fig = go.Figure()
fig.add_trace(
    go.Scatter(x=dfs[0]["sepal_width"],
               y=dfs[0]["sepal_length"],mode="markers",
               marker=dict(color=dfs[0]["sepal_length"],
                           colorscale='Viridis',
                           showscale=True),
               name=dfs[0]["species"].unique()[0],
               showlegend=False
               ))

fig.add_trace(
    go.Scatter(x=dfs[1]["sepal_width"],
               y=dfs[1]["sepal_length"],mode="markers",
               marker=dict(color=dfs[1]["sepal_length"],
                           colorscale='Magenta',
                           showscale=False),
               name=dfs[1]["species"].unique()[0],
               showlegend=False
               ))


fig.add_trace(
    go.Scatter(x=dfs[2]["sepal_width"],
               y=dfs[2]["sepal_length"],mode="markers",
               marker=dict(color=dfs[2]["sepal_length"],
                           colorscale='Cividis',
                           showscale=False),
               name=dfs[2]["species"].unique()[0],
               showlegend=False
               ))

enter image description here

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