是否可以在Seaborn Factor Plot(Python)中为*every*plot添加x轴标签?

equ*_*ity 2 python matplotlib seaborn

我正在使用Seaborn制作一个因子图.

总共,我有4个'子图'(并使用col_wrap =2,所以我有2行,每行包含2个子图).只有网格底部的2个子图有x轴标签(我相信这是默认值).

是否可以配置因子图,使4个图中的每一个都有x轴标签?(我在文档或StackOverflow中找不到此选项)

更新:

这是代码(在因子网格上生成4个时间序列图):

数据框(df)如下所示:

Company     Date        Value
ABC         08/21/16    500
ABC         08/22/16    600
ABC         08/23/16    650
DEF         08/21/16    625
DEF         08/22/16    675
DEF         08/23/16    680
GHI         08/21/16    500
GHI         08/22/16    600
GHI         08/23/16    650
JKL         08/21/16    625
JKL         08/22/16    675
JKL         08/23/16    680


import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns 

df = pd.read_csv(the_file_name.csv)

g = sns.factorplot(data=df,
                   x='Date',
                   y='Value',
                   col='Company',
                   col_wrap=2,
                   sharey=False)
g.set_xlabels('')
g.set_ylabels('product count')
g.set_xticklabels(rotation=45)
plt.show()
Run Code Online (Sandbox Code Playgroud)

您会注意到x轴日期显示在底部的2个图上.我希望x轴日期也显示在前2个图上.

谢谢!

tmd*_*son 5

我不知道如何做到这一点seaborn,但你可以使用matplotlib Axes实例来做到这一点.

例如,这里我们将使用()中的所有轴setp设置xticklabels为可见.请注意,我也在这里设置旋转,因为seaborn不会旋转上排.FacetGridgticklabels

最后,我增加了子图之间的空间,以便为使用标记标签留出空间subplots_adjust.

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns 
from io import StringIO

the_file_name = StringIO(u"""
Company,Date,Value
ABC,08/21/16,500
ABC,08/22/16,600
ABC,08/23/16,650
DEF,08/21/16,625
DEF,08/22/16,675
DEF,08/23/16,680
GHI,08/21/16,500
GHI,08/22/16,600
GHI,08/23/16,650
JKL,08/21/16,625
JKL,08/22/16,675
JKL,08/23/16,680
""")

df = pd.read_csv(the_file_name)

g = sns.factorplot(data=df,
                   x='Date',
                   y='Value',
                   col='Company',
                   col_wrap=2,
                   sharey=False)
g.set_xlabels('')
g.set_ylabels('product count')

for ax in g.axes:
    plt.setp(ax.get_xticklabels(), visible=True, rotation=45)

plt.subplots_adjust(hspace=0.3)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述