2016-12-27 3 views
0

enter image description hereSeaborn tsplot - у оси шкалы

import seaborn as sns 
import matplotlib.pyplot as plt 

sns.tsplot(data = df_month, time = 'month', value = 'pm_local'); 
plt.show() 

Используя этот код, я получаю этот пустой участок, я полагаю, из-за масштаба оси у. Я не знаю, почему это так, вот первые 5 строк моего блока данных (который состоит из 12 строк - 1 строка за каждый месяц): enter image description here

Как это исправить?

+2

Не могли бы вы изменить свой код как [полный пример] (https://stackoverflow.com/help/mcve)? –

ответ

2

Я думаю, что проблема связана с полем unit. Функция ожидает в случае данных, переданных как DataFrame единицей, на которую помещены данные. Это поведение функции не очевидно для меня, но см. Этот пример.

# Test Data 
df = pd.DataFrame({'month': [1, 2, 3, 4, 5, 6], 
        'value': [11.5, 9.7, 12, 8, 4, 12.3]}) 

# Added a custom unit with a value = 1 
sns.tsplot(data=df, value='value', unit=[1]*len(df), time='month') 

plt.show() 

Вы также можете использовать извлечь Series и построить его.

sns.tsplot(data=df.set_index('month')['value']) 
plt.show() 

enter image description here

0

У меня была такая же проблема. В моем случае это было связано с неполными данными, так что каждый момент времени имел по крайней мере одно отсутствующее значение, заставляя по умолчанию оценивать возврат NaN для каждой временной точки.

Поскольку вы показываете только первые 5 записей своих данных, мы не можем сказать, имеют ли ваши данные ту же проблему. Вы можете узнать, работает ли следующее исправление:

from scipy import stats 

sns.tsplot(data = df_month, time = 'month', 
      value = 'pm_local', 
      estimator = stats.nanmean); 
Смежные вопросы