Различные свойства легенды для разных данных на морских точках рассеяния - PullRequest
0 голосов
/ 17 марта 2020

Я создал диаграмму рассеяния морского происхождения для набора данных, где я установил для параметра размера один столбец, а для параметра оттенка - другой. Теперь параметр hue состоит только из пяти различных значений и, как предполагается, помогает классифицировать мои данные, в то время как параметр sizes состоит из намного большего, чтобы представлять фактические цифры c данных. В этом текущем наборе данных мои значения оттенков состоят только из 0, 2 и 4, но в опции «краткой» легенды метки легенды не синхронизируются с тем, что очень запутанно. В опции «полная» легенда метки оттенка верны, но размерных меток слишком много. Поэтому я хотел бы отобразить полную легенду для моего параметра оттенка, но только краткую легенду для параметра размеров, поскольку он состоит из множества уникальных значений.

Как выглядит переполненная «полная» легенда

image

«Краткая» легенда, которая озадачивающе помечена

image

Редактировать: Я отредактировал некоторый код, демонстрирующий проблему со случайным набором данных. Чтобы еще раз задать свой вопрос, я хочу, чтобы параметры "shape" были полностью изображены в легенде, а параметры "size" должны быть сокращены (эквивалентно настройке легенды "краткое").

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

x_condition=np.arange(0,20,1)
y_condition=np.arange(0,20,1)
size=np.random.randint(0,200,20)

# I haven't made a random distribution here, because I wanted to make sure it contains at least one of each [0,2,4]
shape=[0,2,0,4]*5

df=pd.DataFrame({"x_condition":x_condition,"y_condition":y_condition,"size":size,"shape":shape})

sns.scatterplot("x_condition", "y_condition", hue="shape", size="size", data=df, palette="coolwarm", legend="brief")
plt.show()

sns.scatterplot("x_condition", "y_condition", hue="shape", size="size", data=df, palette="coolwarm", legend="full")
plt.show()
...