Как правило, изменение цветовой схемы для сюжетной фигуры express очень просто. Проблема здесь в том, что species
является категориальной переменной . Непрерывные или числовые значения на самом деле проще, но мы вернемся к этому чуть позже.
Для категориальных значений использование color_discrete_map
- совершенно правильный, хотя и громоздкий подход. Я предпочитаю использовать ключевое слово аргумент continuous_colorscale
в сочетании с px.colors.qualitative.Antique
, где Antique
можно изменить на любую из дискретных цветовых схем , доступных в сюжете express. Просто запустите dir(px.colors.qualitative)
, чтобы увидеть, что вам доступно в графической версии, которую вы используете:
['Alphabet',
'Antique',
'Bold',
'D3',
'Dark2',
'Dark24',
'G10',......]
Код 1:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="species", color_discrete_sequence=px.colors.qualitative.Antique)
fig.show()
Сюжет 1:
Так что насчет непрерывных переменных?
Рассмотрим следующий фрагмент:
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length",
color="sepal_length", color_continuous_scale=px.colors.sequential.Viridis)
fig.show()
Запуск этого приведет к получению этого графика:
Вы можете изменить цвета на любой другая тема доступна под dir(px.colors.sequential)
, например color_continuous_scale=px.colors.sequential.Inferno
, и получите этот сюжет:
Что может вызвать здесь путаницу, это настройка color='species
, и сохранение color_continuous_scale=px.colors.sequential.Inferno
даст вам этот график:
Фигура теперь возвращается прямо к использованию графиков по умолчанию, без с предупреждением о том, что color_continuous_scale=px.colors.sequential.Inferno
не имеет эффекта. Это связано с тем, что species
является категориальной переменной со следующими значениями: ['setosa', 'versicolor', 'virginica']
, поэтому color_continuous_scale
просто игнорируется. Чтобы color_continuous_scale
вступил в силу, вам нужно использовать числовое значение, например sepal_length = [5.1, 4.9, 4.7, 4.6, 5. , 5.4, ...]
. И это возвращает нас к моему первоначальному ответу для категориальных значений:
Используйте ключевое слово аргумент continuous_colorscale
в сочетании с px.colors.qualitative