Seaborn-禁用Xtick插值

时间:2019-06-19 11:36:21

标签: pandas seaborn

我正在用seaborn绘制一个数据框,其中2个(日期时间)点相隔一周。我想要的是x轴上的2个点,但是seaborn却给了7个点,这很混乱而且令人困惑。

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

    df = pd.DataFrame.from_dict({'Branch': {0: 'Branch 1', 1: 'Branch 1'}, 'Value £': {0: 24.0, 1: 7.5},
 'W/c': {0: datetime.date(2019, 5, 27), 1: datetime.date(2019, 6, 3)}})

    df
   Branch         W/c  Value £
0  Branch 1  2019-05-27     24.0
1  Branch 1  2019-06-03      7.5



    sns.set()
    fig, ax = plt.subplots()
    pd.plotting.register_matplotlib_converters(explicit=True)
    ax = sns.lineplot(data = df,  x='W/c', y='Value £', hue='Branch')
    fig.savefig('plot.png', bbox_inches='tight')

预期结果:x轴上有2个点

实际结果:x轴上的7点(在df中的日期之间(包括该日期)的每一天)。

如何仅在x轴上获得2个值?

谢谢

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法隐藏除第一个和最后一个刻度标签以外的所有标签。 range(1, len(xtcks)-1)在这里将从第二个滴答声循环到最后一个第二个滴答声,并使其标签隐藏



完整答案

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

df = pd.DataFrame.from_dict({'Branch': {0: 'Branch 1', 1: 'Branch 1'}, 'Value £': {0: 24.0, 1: 7.5},
                             'W/c': {0: datetime.date(2019, 5, 27), 1: datetime.date(2019, 6, 3)}})


sns.set()
fig, ax = plt.subplots()
pd.plotting.register_matplotlib_converters(explicit=True)
ax = sns.lineplot(data = df,  x='W/c', y='Value £', hue='Branch')
fig.canvas.draw()

xticks = ax.xaxis.get_major_ticks()
for i in range(1, len(xticks)-1):
    xticks[i].label1.set_visible(False)

fig.savefig('plot.png', bbox_inches='tight')

enter image description here