使用matplotlib绘制3d线图。 TypeError:根据规则'safe',无法将数组数据从dtype('float64')转换为dtype('S32')

时间:2016-07-18 15:55:26

标签: python numpy matplotlib computer-science

这是我的代码:

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


    with open("TestGraph.txt") as f:
        data = f.read()

    data = data.split('\n')



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



    x = [row.split(' ')[0] for row in data]
    y = [row.split(' ')[1] for row in data]
    z = [row.split(' ')[2] for row in data]
    ax.plot_wireframe(x, y,z)

    plt.show()

TestGraph.txt是

     1 2 3
     3 4 5
     5 6 7
     7 8 9
     9 1 8

当我打印出x,y,z时,它们都是正确的值。我不明白这个错误意味着什么。

1 个答案:

答案 0 :(得分:0)

您的xyz变量是字符串列表(S32)。 plot_wireframe期望floatfloat64)。这是一个更简单的解决方案。您也可以使用pandas

import numpy as np
import matplotlib.pyplot as plt

f = r"TestGraph.txt"

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

data = np.loadtxt(f)
x = data[:, 0]
y = data[:, 1]
z = data[:, 2]
ax.plot_wireframe(x, y, z)

plt.show()