#python #seaborn
Вопрос:
Я хотел бы определить количество категорий для оттенка для числовой переменной. Например, я использую столбцы глубины в качестве оттенка, значение столбца глубины колеблется в диапазоне 400-600. в приведенном ниже коде он выводит только 4 категории: 400, 450,500,600. Я хотел бы изменить количество категорий с 4 на 8, т. Е. с оттенком 400,425,450,475,500,525,550,575,600. Как это сделать? Спасибо
sns.scatterplot(x=x,y=y,data=df,hue='depth')
Комментарии:
1. Я думаю, вам нужно использовать
palette
аргумент и предоставить ему либо диктант, либо экземпляр maplotlibColormap
. seaborn.pydata.org/generated/seaborn.scatterplot.html2. Спасибо, Павел, я использовал палитру=»прохладно» вот так. Мне также нравится это: viridis = cm.get_cmap(‘viridis’, 12), палитра=virdis, и это все еще не работает, спасибо
Ответ №1:
Поэтому я был немного неуверен в вашем вопросе, особенно в той его части:
Например, я использую столбцы глубины в качестве оттенка, значение столбца глубины колеблется в диапазоне 400-600.
Вы имеете в виду непрерывный процесс? или дискретный? В любом случае, если предположить, что диапазон непрерывен, мы можем достичь того, чего вы хотите, с помощью процесса сортировки.
Я начну с создания образца ваших данных:
import seaborn as sns
import pandas as pd
from random import randrange
df = pd.DataFrame()
for i in range(0,50):
df = df.append({'x': randrange(1,10),
'y': randrange(10,21),
'depth':randrange(400,601)}, ignore_index=True)
df
Затем мы сгруппируем значения в глубину в соответствии с вашей спецификацией и используем их в качестве нового столбца для ввода в аргумент hue. Они не упоминают об этом в документе, но аргумент hue для точечной диаграммы требует одинакового количества строк для всех ненулевых строк в df.
mybins = pd.IntervalIndex.from_tuples([(400, 425),
(425, 450),
(450, 475),
(475, 500),
(500, 525),
(525, 550),
(550, 575),
(575, 600)])
df['bins'] = pd.cut(df['depth'], bins = mybins)
df['bins'] = df['bins'].apply(lambda x: x.right)
df
Теперь давайте посмотрим на результаты:
оттенок с использованием глубины:
оттенок с использованием бункеров:
оттенок с использованием ячеек, но с градиентным оттенком
sns.scatterplot(x='x',y='y',data=df, hue='bins', palette = "ch:s=.25,rot=-.25")
Комментарии:
1. Большое вам спасибо, Геоф, это действительно работает. Я ценю вашу помощь. Это потрясающе!