Как построить линейный участок с морским приморьем? - PullRequest
0 голосов
/ 20 июня 2019

У меня есть примерный фрейм данных, показанный ниже.Я хочу построить каждый столбец по индексу фрейма данных.

x1 = pd.DataFrame()
x1['x25'] = df['X'][0:45].reset_index(drop=True)
x1['x50'] = df['X'][90:135].reset_index(drop=True)
x1['x75'] = df['X'][180:225].reset_index(drop=True)
x1['x100'] = df['X'][270:315].reset_index(drop=True)
x1['x125'] = df['X'][360:405].reset_index(drop=True)  

, используя x1.head(), вывод показан ниже.

    x25      x50      x75    x100   x125
0   22732   22852   22997   23151   23253
1   22732   22853   22995   23153   23254
2   22733   22851   22997   23153   23254
3   22731   22851   22995   23150   23255
4   22730   22851   22997   23152   23254

Я проверил вывод каждого столбца, онивсе равны.

print(len(x1.index), len(x1['x25']), len(x1['x50']), len(x1['x75']), len(x1['x100']), len(x1['x125']))

45 45 45 45 45 45

Я пытаюсь построить с помощью команды ниже, но я получаю сообщение об ошибке ValueError: массивы должны быть одинаковой длины

sns.lineplot( x1, x1.index, ['x25','x50','x75','x100','x125'])

Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю не так.

1 Ответ

1 голос
/ 20 июня 2019

Можно несколько раз вызвать lineplot, передав объект, такой как серия панд, именованным аргументам:

sns.lineplot(x=x1.index, y=x1['x25'])
sns.lineplot(x=x1.index, y=x1['x50'])
sns.lineplot(x=x1.index, y=x1['x75'])
sns.lineplot(x=x1.index, y=x1['x100'])
sns.lineplot(x=x1.index, y=x1['x125'])

Или в цикле:

for i in  ['x25','x50','x75','x100','x125']:
   sns.lineplot(x=x1.index, y=x1[i])

Multiple Line Plots Output


Тем не менее, рассмотрите возможность использования одного фрейма данных и, следовательно, одного вызова lineplot, растопив ваши широкие данные в long и отобразив ваш индекс в виде столбца.Затем вызовите lineplot с оттенком для автоматической легенды:

# CREATE NEW COLUMN NAMED index
x1 = x1.reset_index()

# MELT DATA
mdf = x1.melt(id_vars='index')

# PLOT LINE WITH data AND hue ARGUMENTS
sns.lineplot(x='index', y='value', data=mdf, hue='variable')

Single Data Frame Plot


Данные

df = pd.DataFrame({'X': np.random.uniform(2000, 5000, 500)})

x1 = pd.DataFrame({'x25': df['X'][0:45].reset_index(drop=True),
                   'x50': df['X'][90:135].reset_index(drop=True),
                   'x75': df['X'][180:225].reset_index(drop=True),
                   'x100': df['X'][270:315].reset_index(drop=True),
                   'x125': df['X'][360:405].reset_index(drop=True)})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...