【问题标题】:Value error in drawing the contourf plot绘制轮廓图时的值错误
【发布时间】:2015-05-04 11:54:02
【问题描述】:

我想画某个函数的contourf,我的代码如下:

xlist = linspace(0, 100, 100)
ylist = linspace(0, 100, 200)
X, Y = meshgrid(xlist, ylist)
#print "X = " + str(X)
#print "Y = " + str(Y)
Z = power_at_each_point(X, Y)
#print "Z = " + str(Z)
figure()
CP2 = contourf(X, Y, Z)
colorbar(CP2)
title('Contour Plot')
xlabel('Room-x (m)')
ylabel('Room-y (m)')
show()

函数 power_at_each_point(X,Y) 单独测试时我写的:

print power_at_each_point(50, 50)

输出是-80.9187477018

它基本上代表了房间内达到这一点的功率,它正常输出一个数字,但是当我在meshgrid命令之后调用它时,它返回一个错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

我想获取房间 x-coord 和 y-coord 中点的每个坐标,并使用power_at_each_point 方法计算此时达到的功率 它应该返回一个数字,我会在轮廓图中表示它。

我的猜测是 Z = power_at_each_point 的参数 (X,Y) 从只是数字变成了我不想要的数组,这就是导致错误的原因。 如何让函数 Z = power_at_each_point(X,Y) 将 X 作为参数作为数字 ex :1 和 Y ex :2 并返回此时的功率值,以便我可以在轮廓图中表示它。

任何帮助将不胜感激。

【问题讨论】:

  • 问题可能出在您的函数power_at_each_point 上,它不知道如何处理非标量参数。也许您应该将代码发布到此函数。

标签: arrays python-2.7 plot contour contourf


【解决方案1】:

我发现函数meshgrid 需要一个矩阵作为参数,所以我继续创建了一个名为 Z 的矩阵,我自己填充了其中的值,然后我继续输入 Z 作为meshgrid 函数的参数:

x_list = linspace(0, 100, 100)
y_list = linspace(0, 100, 100)
X, Y = meshgrid(x_list, y_list)

Z = [[0 for x in range(len(x_list))] for x in range(len(y_list))]
for each_axes in range(len(Z)):
    for each_point in range(len(Z[each_axes])):
        Z[each_axes][each_point] = power_at_each_point(each_axes, each_point)

figure()
CP2 = contourf(X, Y, Z)

就我在这里提出的问题而言,这让我得到了我想要的结果。 这些点在 Z 矩阵中反转,或者您可以说沿水平方向镜像,但这是我要玩的东西,以便我可以在 Z 中获取这些元素以匹配网格网格实际设置它的网格点的方式。

【讨论】:

    猜你喜欢
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 2019-11-23
    相关资源
    最近更新 更多