Как добавить вертикальные линии сетки в сгруппированный блокпост в Seaborn?

1

Я хочу создать сгруппированный boxplot с вертикальными линиями сетки в seaborn, то есть на каждом тике должна быть вертикальная линия, как на обычном графике рассеяния.

Пример кода:

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import numpy.random as rnd

some_x=[1,2,3,7,9,10,11,12,15,18]
data_for_each_x=[]

for i in range(0, len(some_x)):
    rand_int=rnd.randint(10,30)
    data_for_each_x.append([np.random.randn(rand_int)])

sns.set()
sns.boxplot(data=data_for_each_x, showfliers=False)
plt.show()

Как это выглядит:

Изображение 174551

Теги:
matplotlib
seaborn
boxplot

1 ответ

0

Если я вас правильно понял, вам нужны вертикальные белые линии сетки вместо горизонтальных линий, которые вы получаете в настоящее время. Это один из способов сделать это:

Создайте объект ax и затем назначьте его для sns.boxplot. Затем вы можете выбрать, какие линии сетки показывать, используя логический аргумент для ax.xaxis.grid и ax.yaxis.grid. Поскольку вам нужны вертикальные линии сетки, отключите y-grid (False) и включите x-grid (True).

import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
import numpy.random as rnd

fig, ax = plt.subplots() # define the axis object here
some_x=[1,2,3,7,9,10,11,12,15,18]
data_for_each_x=[]

for i in range(0, len(some_x)):
    rand_int=rnd.randint(10,30)
    data_for_each_x.append([np.random.randn(rand_int)])

sns.set()
sns.boxplot(data=data_for_each_x, showfliers=False, ax=ax) # pass the ax object here

ax.yaxis.grid(False) # Hide the horizontal gridlines
ax.xaxis.grid(True) # Show the vertical gridlines

Если вы хотите отобразить как x, так и y сетки, используйте ax.grid(True)

Изображение 174551

  • 0
    Мне не нужно обязательно отключать горизонтальные (поэтому я оставлю этот ax.yaxis.grid(False) вне), но да, вот и все! Спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню