我有一个3列表,我想做一个pcolor图。ccplot = plt.pcolor(a,b, c, vmin=np.min(c), vmax=np.max(c))
a和B的形状是:(108,)
问题是:
当c的形状是(216)时,我得到错误:
ValueError: not enough values to unpack (expected 2, got 1)
当我将c重新整形为形状为(10800,2)的2d数组时,我得到错误:
TypeError: Dimensions of C (108, 2) are incompatible with X (108) and/or Y (108); see help(pcolor)
请帮我处理这个pcolor图。我先谢谢你。
关于Travis H
2条答案
按热度按时间wi3ka0sx1#
我相信你正在以错误的方式看待pcolor实现。如果你把c作为一个(216)的数组,它就没有意义了,因为它需要i和j的值来解包,以找到它在2D网格中的位置。pcolor需要能够访问c[ i,j ],并且对于像(216,j)这样的1D阵列,这是不可能的。
同样,当你有C(108,2)时,你的其他数组应该看起来像X(109,)Y(3,)。请尝试以下示例:
所以c是一个6x 10的矩阵,它需要x和y的角的位置。然后,它们的长度需要为7和11,以提供c矩阵的角的所有坐标。对于角上的一些视觉效果,您可以转到https://matplotlib.org/api/_as_gen/matplotlib.pyplot.pcolor.html,其中第一个图像显示X,Y和C是如何相关的。
希望能帮上忙!
p1tboqfb2#
问题是数组的维数必须兼容。该解决方案可以通过将a和b“重塑”为(36,3)来实现,然后通过ax.pcolormesh()制作它们的网格。最后,如果c也被重塑为(36,3),则可以绘制pcolor,即转换为2D数组。要特别注意网格,以便根据应用程序使其有意义。
pcolormesh更适合于较大的数据集。