Как сложить 2D-графики серии Pandas в 3D-структуру? - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть некоторые продольные данные 1 веса 115 пациентов, структурированных в кадре данных.Однако, когда я попытаюсь построить это, все графики будут совмещены друг с другом, что вряд ли будет понятно.

Теперь я хотел бы построить отдельные графики для каждого пациента рядом друг с другом, а не поверх друг друга;следовательно, создание 3D-сюжета.

Я пробовал это:

fig = plt.figure()
ax = fig.gca(projection='3d')

x = [i for i in range(10)]
for i in range(115):
    y = i
    ax.plot(x, dfm.WOMEN.interpolate(method='linear', limit_area = 'inside').loc[:, i], zs=i, zdir='z')
ax.view_init(elev=-150., azim=1000)

plt.show()

И хотя при закрытии это проецирует веса по оси Y, и каждый пациент увеличивается по оси Z.Мне это кажется немного странным.

[https://i.stack.imgur.com/wlxNE.png] (примерно так)

Кто-нибудь знает, как я могу проецировать веса на ось z и отображать своих пациентов?по оси Y?

ДАННЫЕ: например.(значения уже интерполированы внизу)

Пациент 1: [118,0, 111,0, 104,0, 102,42857142857143, 100,85714285714286, 99,28571428571429, 97,71428571428571, 96,14285714285714, 94,57142857142857, 93,0 * 101 * 100 *1010* Пати 10186,0, 75,0, 69,0, 69,0, 69,0, 69,0, 69,0, 69,0]

Пациент 3: [105,0, 97,0, 89,0, 85,0, 85,0, 85,0, 85,0, 85,0, 85,0, 85,0]

Пациент 4: [116.0, 103.5, 91.0, 85.0, 85.0, 85.0, 85.0, 85.0, 85.0, 85.0, 85.0]

Пациент 5: [112.0, 108.57142857142857, 105.14285714285714, 101.71428571428572, 98.285714285714574, 94,88282857143, 94.88282857143, 91.828282857143, 94.828282857143, 94.8828285714291, 94.8828285714291, 94.8828285714291, 94.8828285714291, 94.8828285714291, 94.8828285714291, 94.0, 88,0, 88,0, 88,0]

Пациент 6: [148,0, 136,33333333333334, 124,66666666666667, 113,0, 112,0, 112,0, 112,0, 112,0, 112,0, 112,0]

Пациент 7: [114,0, 111,0, 108.0, 105.0, 101.66666666666667, 98.33333333333333, 95.0, 91.66666666666667, 88.33333333333333, 85.0]

(я отформатировал серию в списке для более легкого понимания здесь, но на моем компьютере он находится в кастрюлеdas dataframe)

1 Ответ

0 голосов
/ 29 сентября 2018

Не видя ваших данных, я не могу протестировать это решение, но попробуйте изменить то, что вы передаете, на y и z.Что-то вроде:

ax.plot(xs=x, 
        ys=i, 
        zs=dfm.WOMEN.interpolate(method='linear', limit_area='inside').loc[:, i],
        zdir='z')

Также обратите внимание, что ваш код определяет y = i, но y фактически никогда не используется.

...