Python 使用matplotlib绘制三维线图。TypeError:无法根据规则将数组数据从数据类型(';float64';)转换为数据类型(';S32';);安全';

Python 使用matplotlib绘制三维线图。TypeError:无法根据规则将数组数据从数据类型(';float64';)转换为数据类型(';S32';);安全';,python,numpy,matplotlib,computer-science,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.f

这是我的代码:

    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时,它们都是正确的值。我不明白错误的意思。

您的
x
y
z
变量是字符串列表(
S32
)。
plot\u线框
需要
float
float64
)。这里有一个更简单的解决方案。您也可以使用熊猫

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()

您的
x
y
z
变量是字符串列表(
S32
)。
plot\u线框
需要
float
float64
)。这里有一个更简单的解决方案。您也可以使用熊猫

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()

在问题中发布整个回溯始终是个好主意,而不仅仅是在问题标题中提供摘要。在问题中发布整个回溯始终是个好主意,而不仅仅是在问题标题中提供摘要。