gpt4 book ai didi

python - 在 matplotlib 中绘制 3d 数据

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:15 24 4
gpt4 key购买 nike

-- 这是一篇更新的帖子,旧帖子已删除 --

假设我有如下数据,我想使用 matplotlib 在 3D 图形/表面中绘制。我该怎么做?

enter image description here

按照@JouniK.Seppänen 的回答,我认为我需要meshgrid(),但我认为我的轴数据不是很正确。如果我有如下数据(JSON 格式):

{
"data": {
"Random": [
[1834, 3353, 4602, 5471, 6522, 7873],
[2637, 8575, 8357, 10329, 9742, 10359],
[3648, 10602, 10667, 10751, 10666, 10552],
[4570, 10220, 9202, 10460, 10329, 10928],
[5879, 10788, 10832, 10923, 11075, 10989],
[6783, 11104, 10235, 10499, 11024, 10731],
[7074, 11097, 10222, 10613, 10508, 10767],
[7300, 11002, 10727, 11073, 10328, 10864]],
"LRU": [
[123, 155, 201, 223, 296, 321],
[143, 590, 1046, 1566, 1924, 2434],
[163, 1167, 1774, 2578, 3363, 3980],
[182, 1172, 2259, 3038, 4200, 4907],
[219, 1718, 3044, 3658, 5236, 5680],
[709, 2263, 3588, 4551, 5262, 6197],
[2065, 3865, 4430, 5024, 5986, 6617],
[3048, 4249, 5029, 5790, 6157, 6826]],
"FIFO": [
[180, 269, 350, 424, 580, 601],
[230, 906, 1446, 2009, 2408, 2902],
[316, 1590, 2261, 3042, 3848, 4457],
[473, 1664, 2781, 3542, 4764, 5398],
[665, 2290, 3609, 4194, 5781, 6207],
[1158, 2826, 4115, 5064, 5751, 6613],
[2457, 4375, 4974, 5471, 6464, 7077],
[3512, 4724, 5485, 6272, 6684, 7312]]
},
"workingSetAxis": [2, 22, 42, 62, 82, 102, 122, 142],
"stabilityAxis": [0.0, 0.2, 0.4, 0.6, 0.8, 1.0]
}

workingSetAxis 应该是 x 轴,stabilityAxis 应该是 y 轴。我做了类似的事情

plot(jsonObj["data"]["FIFO"], jsonObj["workingSetAxis"], jsonObj["stabilityAxis"])

def plot(data, workingSetAxis, stabilityAxis):
# make axis data
X, Y = numpy.meshgrid(workingSetAxis, stabilityAxis)
Z = data

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
ax.plot_wireframe(X, Y, Z)
plt.show()

得到类似的东西:

enter image description here

与我从 excel 中得到的图非常不同(对于 FIFO 数据)

enter image description here

我相信我的轴数据或其他什么地方有问题,但是哪个?

最佳答案

尝试绘制数据的转置图,例如,使用

def plot(data, workingSetAxis, stabilityAxis):
# make axis data
X, Y = numpy.meshgrid(workingSetAxis, stabilityAxis)
Z = numpy.transpose(data) #<--- This is the only line I have changed.

fig = plt.figure()
ax = fig.add_subplot(111, projection="3d")
ax.plot_wireframe(X, Y, Z)
plt.show()

您的示例数据为我提供了以下图表: plot demonstrating expected output

关于python - 在 matplotlib 中绘制 3d 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com