Seaborn - отключить интерполяцию xtick - PullRequest
0 голосов
/ 19 июня 2019

Я строю график данных в seaborn с двумя точками (дата / время), разделенными неделей.То, что я хочу, это 2 балла по оси X, но Морской Борн дает 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')

Ожидаемый результат: 2 балла по оси X

Фактический результат: 7 балловпо оси x (каждый день между датами в df и включительно).

Как получить только 2 значения по оси x?

Спасибо

1 Ответ

0 голосов
/ 19 июня 2019

Вы можете скрыть все метки галочек, кроме первой и последней, используя следующее. Здесь range(1, len(xtcks)-1) будет повторяться со 2-го тика до второго последнего тика и скрывать их метки



Полный ответ

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...