Вот фрагмент кода для тестирования палитр Seaborn:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sb
print("Seaborn version : {0}".format(sb.__version__))
# Seaborn version : 0.10.0
print("Matplotlib version : {0}".format(matplotlib.__version__))
# Matplotlib version : 3.1.3
Просто чтобы вы знали, что он работает с этими версиями
# simple color test without palette
n = 1000
x = np.arange(1,n+1,1)
y = np.random.randint(-100,100,n)*np.random.random(n)
sb.barplot(x,y)
plt.xticks([])
plt.show()
# with your color choices
plt.figure(figsize=(20,20))
sb.barplot(x,y, palette=sb.color_palette("RdBu",n_colors=7))
plt.xticks([])
plt.show()
Так что, похоже, работает с массивами моего кода.
Возможно:
seaborn не понимает ваши данные (проверьте ваш фрейм данных?)
У вас есть ошибочная версия seaborn или matplotlib (попробуйте pip install seaborn == 0.10 .0 и pip install matplotlib == 3.1.3)
Вы можете попробовать другую цветовую палитру
Надеюсь, это поможет!
РЕДАКТИРОВАТЬ: Благодаря @ImportanceOfBeingErnest, я думаю, я понял вашу проблему. Это происходит от этого стиля, просто прокомментируйте / раскомментируйте, чтобы увидеть результат
# sb.set_style("darkgrid")
К сожалению, я не нашел ни одного параметра kwargs, связанного со стилем darkgrid, для удаления ошибки ... Поэтому я предлагаю воссоздать это стиль вручную!
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_facecolor('whitesmoke')
# background color
ax.grid(color='white', linestyle='-', linewidth=1)
# the grid
sb.barplot(x,y,zorder=2, palette=sb.color_palette("RdBu",n_colors=7))
#zorder=2 to draw above the grid
plt.xticks([])
plt.show()