如何在Seaborn的分组箱线图中添加垂直网格线?
·
回答问题
我想在seaborn
中创建一个带有垂直网格线的分组boxplot
,即在每个刻度处,应该有一条垂直线,就像在常规散点图中一样。
一些示例代码:
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()
它的外观:
Answers
如果我理解正确,您需要垂直的白色网格线而不是您当前获得的水平线。这是这样做的一种方法:
创建一个轴对象ax
,然后将其分配给sns.boxplot
。然后,您可以通过使用ax.xaxis.grid
和ax.yaxis.grid
的布尔参数来选择要显示的网格线。由于您想要垂直网格线,请关闭 y 网格 (False
) 并打开 x 网格 (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)
更多推荐
所有评论(0)