морские рожки не красящие бары в барплоте - PullRequest
0 голосов
/ 16 марта 2020

Я начал работать над диссертацией, и у меня уже есть проблема. Я пытаюсь сделать барный сюжет ок. 250 баров, но кажется, что морская волна не показывает цвета для большинства баров. Я думал, что он может циклически проходить через палитру - но он просто показывает их белым. Если я возьму меньший образец (думаю, до 99), каждый столбец будет окрашен. Даже с одним цветом (не палитрой) отображаются белые полосы.

Может ли кто-нибудь помочь мне с этим? вот код и график:

спасибо!

1 Ответ

0 голосов
/ 16 марта 2020

Вот фрагмент кода для тестирования палитр 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()

enter image description here

# 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()

enter image description here

Так что, похоже, работает с массивами моего кода.

Возможно:

  • 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()

enter image description here

...