Есть ли способ, где я могу построить данные из файла CSV, где каждые 10 точек данных в столбце - это разные линии на одном графике? - PullRequest
1 голос
/ 13 мая 2019

Скажем, у меня есть набор данных, который находится в двух столбцах. Я хочу построить линейный график, повторяющийся через каждые 10. Итак, я бы взял первые 10, а затем вторые 10, которые находятся под первыми 10, для другого линейного графика на том же графике (другой цветовой линии). Данные накладываются друг на друга в файле CSV без заголовка.

В настоящее время он у меня есть во всей колонке. Он наносит их на график, однако нет никакого различия в том, какой набор данных это. Я хочу построить несколько линий на одном графике, но файл CSV содержит все наборы данных в одном столбце, но мне нужно строить графики каждые 10.

EDIT Ниже у меня добавлены данные. Я бы хотел, чтобы первый столбец был осью X, а второй - Y.

Sample Data:
0   8.2
1   9.1
2   2.2
3   3.3
4   9.8
5   6.3
6   4.8
7   8.6
8   3.9
9   2.1
0   9.34
1   10.2
2   7.22
3   6.98
4   1.34
5   2.56
6   6.78
7   4.56
8   3.3
9   9.4

1 Ответ

2 голосов
/ 13 мая 2019

ОК, попробуйте это:

# this is the toy data
df = pd.DataFrame({0:list(range(10))*2,
                1:np.random.uniform(9,11,20)})

# set up axes for plots
fig, ax = plt.subplots(1,1)

# the groupby argument groups every 10 rows together
# then pass it to the `lambda` function,
# which plots each chunk to the given plt axis
df.groupby(df.reset_index().index//10).apply(lambda x: ax.plot(x[0], x[1]) )
plt.show()

enter image description here

Вариант 2:

Я нашел sns - лучший инструмент для этой цели:

fig, ax = plt.subplots(1,1, figsize=(10,6))
sns.lineplot(x=df[0], 
             y=df[1], 
             hue=df.reset_index().index//10, 
             data=df,
             palette='Set1')
plt.show()

выходы:

enter image description here

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