【问题标题】:generate a 3d plot from data contained in a three columns file从包含在三列文件中的数据生成 3d 图
【发布时间】:2022-01-25 00:02:41
【问题描述】:

我有一个以这种方式构造的三列数据文件(示例):

X Y Z

0 0 0.2 
0 1 0.3
0 2 0.1
1 0 0.2
1 1 0.3
1 2 0.9
2 0 0.6
2 1 0.8
2 2 0.99

我不知道这种文件是如何被调用的......但我没有找到任何使用 3d 线框或 3d 曲面图来绘制它的示例......

编辑但是有一种方法可以用这种方式构造的数据生成线框或曲面图吗?

【问题讨论】:

    标签: python matplotlib plot


    【解决方案1】:

    为了创建曲面图,您首先需要将 x、y 和 z 数据转换为二维数组。然后你可以很容易地绘制它:

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    
    # read out data from txt file
    data = np.genfromtxt("data.txt")[1:]
    x_data, y_data, z_data = data[:, 0], data[:, 1], data[:, 2]
    
    # initialize a figure for the 3d plot
    fig = plt.figure()
    ax = Axes3D(fig)
    
    # create matrix for z values
    dim = int(np.sqrt(len(x_data)))
    z = z_data.reshape((dim, dim))
    
    # create matrix for the x and y points
    x, y = np.arange(0, dim, 1), np.arange(0, dim, 1)
    x, y = np.meshgrid(x, y)
    
    # plot
    ax.plot_surface(x, y, z, alpha=0.75)
    plt.show()
    

    【讨论】:

    • 非常感谢 .. 但我的文件不是 CSV,而是由空格分隔的简单列通常使用 numpy.genfromtxt(...) 在这种情况下我该怎么办?
    • tnx 但我得到了这个:x, y, z = d.split(" ") ValueError: too many values to unpack (expected 3)
    • numpy.genfromtxt(...) 有什么问题,我再次更新了我的答案 :)
    • 非常感谢我如何使用线框或黑白表面?
    • aaaa又更新了,现在应该没问题了,抱歉第一次看不到你的数据
    猜你喜欢
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多