Хобрук: Ваш путь к мастерству в программировании

Морской питон меняет серию окраски на участках

Я пытаюсь изменить цветовую схему по умолчанию, используемую Seaborn на графиках, мне просто нужно что-то простое, например схема HLS, показанная в их документации. Однако их методы, похоже, не работают, и я могу только предположить, что это связано с тем, что я использую «оттенок», но я не могу понять, как заставить его работать правильно. Вот текущий код, datain — это просто текстовый файл с правильным количеством столбцов чисел с p в качестве значения индекса:

import pandas as pd
import numpy as np
datain = np.loadtxt("data.txt")
df = pd.DataFrame(data = datain, columns = ["t","p","x","y","z"])
ax3 = sns.lineplot("t", "x", sns.color_palette("hls"), data = df[df['p'].isin([0,1,2,3,4])], hue = "p")
plt.show()

Код рисует первые несколько наборов данных из файла, и они выводятся в том странном пурпурно-пастельном цвете, который Seaborn использует по умолчанию, если я не включаю функцию sns.color_palette. Если я включаю его, я получаю ошибку:

TypeError: lineplot() получил несколько значений для аргумента ключевого слова «оттенок»

Что кажется немного странным, учитывая формат, принятый для функции линейного графика.


Ответы:


1

Первое: вам нужно придерживаться правильного синтаксиса. Палитра предоставляется через аргумент palette. Просто поместив его в качестве третьего аргумента lineplot, он будет интерпретирован как третий аргумент lineplot, который оказывается hue.

Затем вам нужно будет убедиться, что в палитре столько цветов, сколько у вас разных значений p.

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

datain = np.c_[np.arange(50),
               np.tile(range(5),10),
               np.linspace(0,1)+np.tile(range(5),10)/0.02]
df = pd.DataFrame(data = datain, columns = ["t","p","x"])

ax = sns.lineplot("t", "x", data = df, hue = "p", 
                  palette=sns.color_palette("hls", len(df['p'].unique())))

plt.show()

введите здесь описание изображения

05.03.2019
  • Ой, я очень запутал свои аргументы, спасибо и извините за это. Это очень помогает, спасибо! Одна вещь, которая не сработала для меня, это len(df['p'].unique()), которая сказала мне, что это была другая длина, и это правда, мой исходный набор данных имеет 50 уникальных тегов «p», и я рисую только первые 5 в этом примере, легко управляется конечно. Спасибо еще раз! 06.03.2019
  • Новые материалы

    Введение в контекст React
    В этом посте мы поговорим о Context API, который был представлен в React 16, и о том, как вы можете их использовать. Что такое контекст? Глядя на определение из react docs , оно..

    Шлюз с лицензией OSS, совместимый с Apollo Federation v2, появится в WunderGraph
    Сегодня мы рады сообщить, что мы сотрудничаем с поддерживаемой YC Tailor Technologies, Inc. для внедрения Apollo Federation v2. Реализация будет лицензирована MIT (Engine) и Apache 2.0..

    Это оно
    Ну, я официально уволился с работы! На этой неделе я буду лихорадочно выполнять последние требования Думающего , чтобы я мог сосредоточиться на поиске работы. Что именно это значит?..

    7 полезных библиотек JavaScript, которые вы должны использовать в своем следующем проекте
    Усильте свою разработку JavaScript Есть поговорка «Не нужно изобретать велосипед». Библиотеки — лучший тому пример. Это поможет вам написать сложные и трудоемкие функции простым способом...

    Базовое руководство по переносу концепций обучения в глубокое обучение
    Обзор По мере того, как машинное обучение становится все более мощным и продвинутым, модели, обеспечивающие эту расширенную возможность, становятся все больше и начинают требовать огромного..

    C в C.R.U.D с использованием React-Redux
    Если вы использовали React, возможно, вы знакомы с головной болью, связанной с обратным потоком данных. Передача состояния реквизитам от родительских компонентов к дочерним компонентам может..

    5 обязательных элементов современного инструмента конвейера данных
    В цифровом мире предприятия используют конвейеры данных для перемещения, преобразования и хранения огромных объемов данных. Эти конвейеры составляют основу бизнес-аналитики и играют..