3d使用matplotlib绘制一个简单的数据集

时间:2017-12-31 15:13:34

标签: pandas matplotlib

对不起,如果我的问题听起来......,我是matplotlib的新手。我在pandas dataFrame中有一个简单的数据集,如下所示:

     TAG_1      TAG_2        testTime
0           5      10, 10         758.2
1           5       16, 4        1738.1
2           5        4, 3         752.2
3           5        5, 3         868.9
4           5        5, 4         742.3

有没有办法用matplotlib 3D绘制这样的数据? TAG_1和TAG_2只是简单的标签,它们的值根本不重要,所以实际上我只使用索引列2次作为X轴,Y轴和testTime列作为Z轴。你能给我一个示例代码吗?先感谢您。

这是我正在寻找的情节类型。 Sample chart

修改 我已设法用@furas答案绘制以下内容: enter image description here

1 个答案:

答案 0 :(得分:1)

使用此代码

data = [ [758.2], [1738.1], [752.2], [868.9], [742.3] ]

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

df = pd.DataFrame(data)

threedee = plt.figure().gca(projection='3d')
threedee.plot(df.index, df.index, df[0])

plt.show()

我得到了

enter image description here

它使用索引作为X和Y而列作为Z,但我不知道它是否符合您的预期。

您需要更多数据来绘制更多内容。

我添加了更多列

data = [
    [0, 1, 100, 758.2],
    [0, 1, 100, 1738.1],
    [0, 1, 100, 752.2],
    [0, 1, 100, 868.9],
    [0, 1, 100, 742.3],
]

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

df = pd.DataFrame(data)

Y = range(df.shape[0])
X = range(df.shape[1])
X, Y = np.meshgrid(X, Y)

threedee = plt.figure().gca(projection='3d')
threedee.plot_wireframe(Y, X, df)

plt.show()

我得到了

enter image description here

如果我将X替换为Y,那么我

enter image description here

要获得第一个版本,您可以将X替换为Y或转换DataFrame

df = df.T