3

我无法在 matplotlib 中完成绘图。这是代码:

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)

它产生这个:

正确但错误的方式

我想要你所期望的时间图:更多的“在屏幕上”,而不是像上图那样“垂直”于它。我已经尝试了 ax.plot() 部分的许多不同组合,但是如果我将其更改为:

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

我明白了:

什么

将其更改为:

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

……也无济于事。它只是在原点的 z 方向上制作一个细条。

有任何想法吗?即使有人知道一种方法来旋转整个图形以使图形位于屏幕平面上也比没有好。

4

1 回答 1

4

在没有数据检查的情况下,我认为问题在于ax.plot. 试试这个:

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

因此,您希望 2D 图中的“y”轴是高度,因此zs=ys.

于 2012-05-31T19:44:28.120 回答