Метки изменения tsplot Seaborn на оси X

Я передаю tsplot список списков (скажем, с 31 элементом в каждом из списков), и он показывает метки оси x от 0 до 31.

Как я могу вместо этого показать от -15 до 15?

Пример из руководства, если это необходимо:

import numpy as np
np.random.seed(9221999)
import pandas as pd
from scipy import stats, optimize
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(palette="Set2")

def sine_wave(n_x, obs_err_sd=1.5, tp_err_sd=.3):
    x = np.linspace(0, (n_x - 1) / 2, n_x)
    y = np.sin(x) + np.random.normal(0, obs_err_sd) + np.random.normal(0, tp_err_sd, n_x)
    return y

sines = np.array([sine_wave(31) for _ in range(20)])
sns.tsplot(sines);

person Skrealin    schedule 11.12.2014    source источник


Ответы (1)


Вы можете сделать это следующим образом:

ax = sns.tsplot(sines);                      # capture axis
n = len(ax.xaxis.get_ticklabels())           # count labels
ax.set_xticklabels(np.linspace(-15, 15, n))  # set new tick labels

Редактировать: предыдущее решение — это общий способ matplotlib манипулировать метками деления. Как предложил создатель Seaborn @mwaskom, вы также можете сделать:

sns.tsplot(sines, time=np.linspace(-15, 15, sines.shape[1]))

введите здесь описание изображения

person elyase    schedule 11.12.2014
comment
Да, хотя вы также можете передать метки в аргумент time аргумента tsplot. - person mwaskom; 11.12.2014