我有两个10x10大小的数组,其中一个用来将数组的值显示为2D彩色方格,另一个用来在这个2D方格上绘制等值线图,这样我就可以显示两个数组中的值之间的关系。
我的问题的一些示例数据:
import matplotlib.pyplot as plt
import numpy as np
# make some random data
squares = np.random.random((10,10))
contour = np.random.random((10,10))
# plot squares
plt.pcolor(squares, cmap='bone')
plt.colorbar()
# plot contour
plt.contour(contour, levels=10)
plt.colorbar()
plt.show()
运行这段代码可以根据需要将它们重叠绘制,但是等值线图被移到左下角,并且没有用正方形填充整个图形。如何将等值线图居中,而不必将等值线图数组的大小增加到(11,11)
,而是将其向上和向右移动半个正方形?
任何帮助都很感激
1条答案
按热度按时间klr1opcd1#
pcolor
图为1x1
的单元格着色,其中边界由11
值0, 1, 2, ..., 10
形成。当没有明确给出X
和Y
时,等值线图假设在点位置处给出“高度”,因此在X
和Y
值处,10
坐标值指向0, 1, 2, ..., 9
。要对齐两者,可以告诉
plt.contour
这些值表示单元格的中心,因此坐标值0.5, 1.5, 2.5, ..., 9.5
(用numpy表示,例如np.arange(10) + 0.5
。