2012-05-31 3 views
3

У меня возникли проблемы с отделкой участка в matplotlib. Вот код:matplotlib z-direction

arrays_k, arrays_v = splitbyrecordcount(ycsb[2]) 
checktype = [ "Update", "Read", "Verification" ] 

fig = plt.figure() 
ax = fig.add_subplot('111', projection='3d') 

for z in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]: 
    xs = arrays_k[z] 
    ys = arrays_v[z] 
    c = colmap.spectral(z/10.,1) 
    ax.plot(xs, ys, zs=z, zdir='z', color=c) 

Он производит это:

Correct but wrong way round

Я хочу времени сюжет, как можно было бы ожидать: более «в плоскости» экрана, в отличие от своего рода " перпендикулярно "ему, как на изображении выше. Я пробовал много различных комбинаций ax.plot() части, но если я изменить его на:

ax.plot(xs, ys, zs=z, zdir='y', color=c) 

Я получаю это:

what

Изменение его:

ax.plot(xs, ys, zs=z, zdir='x', color=c) 

... не помогает. Он просто создает тонкую полоску всего в направлении z в начале координат.

Любые идеи? Даже если кто-то знает способ просто повернуть весь график, чтобы графики были в плоскости экрана, было бы лучше, чем ничего.

ответ

4

Без проверки данных Я считаю, что проблема заключается в порядке аргументов для ax.plot. Попробуйте это:

ax.plot(xs, z * np.ones(xs.shape), zs=ys, zdir='z', color=c) 

Итак, вы хотите, что бы ваш «у» оси в 2D сюжет будет высота, следовательно zs=ys.

+0

Отлично. Это исправило это. Это для моего тезиса, который должен пройти через 18 часов. Ты мой герой! <3 – eggonlegs

+0

Рад, что это помогло! Удачи вам в диссертации! – jorgeca

Смежные вопросы