gpt4 book ai didi

python - pcolormesh 添加空的白色列

转载 作者:太空狗 更新时间:2023-10-30 02:45:15 25 4
gpt4 key购买 nike

我一直在尝试用 pcolormesh 做一个简单的热图,但我遇到了一些尺寸的奇怪效果,它添加了空的白色列。如果我创建一个 10x30,如下所示,它会完美运行。

from matplotlib import pyplot as plt 
import numpy as np

d = []
for x in range(10):
d.append([])
for y in range(30):
d[-1].append(y)

plt.pcolormesh(np.array(d))
plt.show()

但是,如果我尝试使用 10x37:

from matplotlib import pyplot as plt 
import numpy as np

d = []
for x in range(10):
d.append([])
for y in range(34):
d[-1].append(y)

plt.pcolormesh(np.array(d))
plt.show()

最后我得到了那些奇怪的白色柱子。这似乎适用于几个值(10x11 失败,但 10x12 有效......我无法辨别模式。 Result of 10x37

有什么方法可以删除它们,也许可以强制热图的最终大小?

最佳答案

在轴限制和纵横比方面,pcolormesh 表现得不像图像,而更像线图。如果要将数组的元素显示为像素,可以使用 imshow。或者,您可以设置 pcolormesh 图的 x 限制。考虑以下示例:

from matplotlib import pyplot as plt 
import numpy as np

d1 = []
d2 = []
for x in range(10):
d1.append([])
d2.append([])
for y in range(30):
d1[-1].append(y+x)

for y in range(37):
d2[-1].append(y+x)



fig, axes = plt.subplots(ncols=4, figsize=(10,4))

# your first two examples
axes[0].pcolormesh(np.array(d1), cmap=plt.cm.coolwarm)
axes[1].pcolormesh(np.array(d2), cmap=plt.cm.coolwarm)

# let's reset the x-lims on this
axes[2].pcolormesh(np.array(d2), cmap=plt.cm.coolwarm)
axes[2].set_ylim(bottom=0, top=d2.shape[0])
axes[2].set_xlim(left=0, right=d2.shape[1])
# or more concisely (thanks Joe):
axes[2].axis('tight')

# and use imshow here
axes[3].imshow(np.array(d2), cmap=plt.cm.coolwarm)

这给了我们:

enter image description here

关于python - pcolormesh 添加空的白色列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25431261/

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