所以我有一个矩阵形式的数据集:
x1, Y1, VALUE1
x2, Y1, VALUE2
x3, Y1, VALUE3
x1, Y2, VALUE4
x2, Y2, VALUE5
x3, Y2, VALUE6
等等。我正确地得到了我的轮廓,除了我的x和y轴来自说1,2,3 ...... N.这很好,因为它代表像素所以不是不正确,但我想将轴值从像素更改为实际单位。我似乎找不到指示轮廓的方法来允许我添加它。
bsquare=np.reshape(value,(x length,y length))
blue=contour(bsquare,colors='b')
plt.show()
其中xlength和ylength是任一轴上的点数。
答案 0 :(得分:0)
plt.contour
可以为数组X, Y, Z
提供,然后将Z
作为轮廓值,并在各自的轴上使用X
和Y
。这是一个首先制作一些数据的脚本,然后进入您描述的表单数组:
import matplotlib.pyplot as plt
import numpy as np
# Make some test data
nx = 2
ny = 3
x = np.linspace(0, 3, nx)
y = np.linspace(50, 55, ny)
X, Y = np.meshgrid(x, y)
Z = np.sin(X) + Y
# Now get it into the form you describe
data = [[[x[i], y[j], Z[j, i]] for i in range(nx)] for j in range(ny)]
data = np.array(data)
print data
>>>
[[[ 0. 50. 50. ]
[ 3. 50. 50.14112001]]
[[ 0. 52.5 52.5 ]
[ 3. 52.5 52.64112001]]
[[ 0. 55. 55. ]
[ 3. 55. 55.14112001]]]
注意我使用numpy.array
而不仅仅是正常列表,这在下一步中非常重要。让我们分析这些数据,因为我认为你已经完成了x和y值以及值本身:
# Now extract the data
x_values = data[:, :, 0]
y_values = data[:, :, 1]
values = data[:, :, 2]
现在所有这些都是nx, ny
数组,即它们与bsquare
具有相同的形状。您可以通过打印values.shape
并更改整数nx, ny
来检查此问题。现在我将绘制三件事:
首先,您只需轮廓绘制值,这会自动添加轴值
其次,我使用数组绘制正确的缩放比例和
最后,我将绘制原始数据集,以显示它正确地恢复数据。
您需要将轴值与伪造数据的创建位置进行比较:
fig, axes = plt.subplots(ncols=3, figsize=(10, 2))
axes[0].contour(values)
axes[1].contour(x_values, y_values, values)
axes[2].contour(X, Y, Z)
如何实现这在很大程度上取决于您导入数据的方式。如果您可以简单地将其变为numpy.array()
,那么我认为这将解决您的问题。
希望我能正确理解你的问题。