python - 如何将 x 轴标签添加到 seaborn 图形级图中的每个图

标签 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()

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

谢谢!

最佳答案

我不确定在 seaborn 中有什么方法可以做到这一点,但您可以使用 matplotlib Axes 实例来做到这一点。

例如,这里我们将使用 setpxticklabels 设置为对 FacetGrid (g) 中的所有轴可见。请注意,我也在这里设置了旋转,因为 seaborn 不会旋转上行的 ticklabels

最后,我增加了子图之间的空间,以便使用 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()

enter image description here

关于python - 如何将 x 轴标签添加到 seaborn 图形级图中的每个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39352563/

相关文章:

python - 如何将从 udp 接收的数据转换为 Python 中的 ctype 结构?

javascript - Python:无法在网页中使用 Selenium 下载

python-2.7 - fill_between给出 "ValueError: Argument dimensions are incompatible"

python - Seaborn violinplot 中 HUE 参数的多列

python-3.x - 来自列表而不是数据框的 Seaborn 条形图

python - 在 Pandas 数据框中拆分字符串

python - Matplotlib : Plot open interval, 连接线到空圆

python - 带计数的 Matplotlib 折线图?

python - Pandas style.background_gradient 忽略 NaN

python - 如何检查 AppEngine 上是否提供了 DataStore 索引?