#python #matplotlib
Вопрос:
Я понимаю, что этот вопрос задавался раньше, но предлагаемые решения о преобразовании списка в массив numpy не решают мою проблему. У меня есть фрейм данных, который выглядит так:
pop_member scores
0 0 [0.18041600508077302, 0.22858464943610304, 0.2...
1 1 [0.20068084127748528, 0.21373704261775583, 0.3...
2 2 [0.16593641522899372, 0.38625108196251007, 0.3...
3 3 [0.166185834331544, 0.33164031068142613, 0.191...
4 4 [0.18027798511494217, 0.18249255288904706, 0.1...
timestep
0 [0.0013907990823846528, 0.18140509483556186, 0...
1 [0.0013907990823846528, 0.1724678206436131, 0....
2 [0.0013907990823846528, 0.16461921052581957, 0...
3 [0.0013907990823846528, 0.15999631524775232, 0...
4 [-0.25701551548128926, 0.17441802772910156, 0....
Столбцы оценки и временные интервалы содержат списки. Значения для воспроизведения приведены ниже:
pop member 0
scores: [0.18041601 0.22858465 0.2236205 ]
timestep: [0.0013908 0.18140509 0.20914713 0.17436499 0.1785457 0.18833733]
pop member 1
scores: [0.20068084 0.21373704 0.31533351]
timestep: [0.0013908 0.17246782 0.17146181 0.27099373 0.16979124 0.16125755]
pop member 2
scores: [0.16593642 0.38625108 0.3025389 ]
timestep: [0.0013908 0.16461921 0.16421641 0.14843701 0.17370711 0.17566512]
pop member 3
scores: [0.16618583 0.33164031 0.19115312]
timestep: [0.0013908 0.15999632 0.16095213 0.17207548 0.1702441 0.15623793]
pop member 4
scores: [0.18027799 0.18249255 0.13129566 0.19134298]
timestep: [-0.25701552 0.17441803 0.17666349 0.18146539 0.17697329 0.18239527]
Я пытаюсь построить временной шаг по оси x и оценки по оси y, используя следующий код:
# plot scores with timesteps
c = ['blue', 'olive', 'yellow', 'red', 'purple']
for p in range(len(test)):
plt.plot('timestep', 'scores', data=test.iloc[p], color=c[p], linewidth=2)
plt.legend()
plt.xlabel('Timesteps')
plt.ylabel('Scores')
plt.show()
Я уже пытался преобразовать списки в массивы numpy. Не работает. Любые другие предложения, пожалуйста?
Комментарии:
1. пожалуйста, предоставьте список
scores
, иtimestep
таким образом мы сможем скопировать их и воспроизвести вашу проблему2. Готово, пожалуйста, смотрите сейчас! Извини, что не отдал их раньше.
3. ошибка значения, которую вы получаете, оправдана, хотя у вас есть 3 элемента
scores
и 6 элементовtimestep
. Как вы ожидаете, что эти элементы будут соединены? например, дляpop member 0
:(x0, y0)=(0.18041601, 0.0013908)
,(x1, y1) = (0.22858465, 0.18140509)
,(x2, y2) = (0.2236205, 0.20914713)
и что будет дальше?4. ох. Я понимаю. Спасибо за объяснение, тогда я попытаюсь разобраться в самих данных.
5. конечно, спросите еще раз, если вы застряли 🙂 кстати, я не думаю, что это правильно:
plt.plot('timestep', 'scores', data=test.iloc[p], color=c[p], linewidth=2)
. Я думаю, ты что-то перепуталdf.plot
иplt.plot