Python pcolormesh添加空的白色列
我一直在尝试用pcolormesh做一个简单的热图,我遇到了一些尺寸的奇怪效果,其中添加了空的白色列。如果我创建一个10x30,如下所示,它可以完美地工作Python pcolormesh添加空的白色列,python,matplotlib,Python,Matplotlib,我一直在尝试用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.arr
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工作…我无法识别模式)。
有没有办法去除它们,或者强制设定热图的最终尺寸?在轴限制和纵横比方面,
pcolormesh
的行为不像图像,更像是一个线图。如果你想将数组的元素显示为像素,你可以使用imshow
。或者,你可以设置p的x限制CurrimeS/<代码>情节。考虑下面的例子:
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)
这给了我们:
非常感谢,imshow的问题(我以前使用过),就是你不能将数字保存为漂亮的矢量图形。地图中的颜色总是很模糊。@Zenon-hmm。我从来没有遇到过这个问题。你调用savefig
,是否将dpi设置得足够高?你也可以搞乱它的插值选项。我尝试过,但设置得足够大(比如800),对于大型图形(10k x 10k行),文件大小变得非常可笑。因此,pcolormesh提供的矢量图像选项似乎非常完美。@Zenon理解。我建议设置轴限制(和纵横比)在这种情况下是显式的。我将修改示例,以演示如何更优雅地执行此操作。@PaulH-或者,您可以调用ax.axis('tight')
来自动将轴限制设置为数据的边界,而不是手动指定它们。