【问题标题】:How would I make a 3D surface plot in Matplotlib given this data of x,y,z coordinates?给定 x、y、z 坐标的数据,我将如何在 Matplotlib 中制作 3D 曲面图?
【发布时间】:2022-01-20 13:43:21
【问题描述】:

我有这种格式的数据:

from itertools import permutations
import random

values = [val for val in range(5)]
xy_coordinate_pairs = list(permutations(values, 2))
z_values = [random.randint(0,20) for val in range(len(xy_coordinate_pairs))]
data = dict(zip(xy_coordinate_pairs,z_values))

{(0, 1): 4,
 (0, 2): 20,
 (0, 3): 16,
 (0, 4): 12,
 (1, 0): 6,
 (1, 2): 3,
 (1, 3): 6,
 (1, 4): 16,
 (2, 0): 19,
 (2, 1): 17,
 (2, 3): 17,
 (2, 4): 11,
 (3, 0): 18,
 (3, 1): 13,
 (3, 2): 11,
 (3, 4): 20,
 (4, 0): 20,
 (4, 1): 19,
 (4, 2): 6,
 (4, 3): 0}

我想将其绘制为 3d 曲面图,其中 x 和 y 坐标分别是键元组中的第一个和第二个值,z(曲面图的高度)是字典值。我该怎么做呢?

非常感谢,祝您有美好的一天。

【问题讨论】:

标签: python pandas matplotlib data-visualization


【解决方案1】:

我不确定您为什么要创建元组和字典。假设您有三个不同的 x、y 和 z 轴数组:

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

x = [val for val in range(10)]
y = [val * val for val in range(10)]
z = [val * val * val for val in range(10)]

你所要做的就是:

fig = plt.figure()
ax = Axes3D(fig)
surf = ax.plot_trisurf(x, y, z, linewidth=0.1)
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

最终结果如下:

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多