Python 尝试创建测试图案样式栏时,Imshow和pcolor会抛出错误
我正在尝试创建一个图像,用作我正在创建的新颜色贴图的测试模式。地图应该有九种独特的颜色,在0-8之间的整数处有中断。颜色贴图本身很好,但我似乎无法生成图像本身 我使用熊猫制作测试阵列,如下所示:Python 尝试创建测试图案样式栏时,Imshow和pcolor会抛出错误,python,matplotlib,Python,Matplotlib,我正在尝试创建一个图像,用作我正在创建的新颜色贴图的测试模式。地图应该有九种独特的颜色,在0-8之间的整数处有中断。颜色贴图本身很好,但我似乎无法生成图像本身 我使用熊猫制作测试阵列,如下所示: mask=pan.DataFrame(index=np.arange(0,100),columns=np.arange(1,91)) mask.ix[:,1:10]=0.0 mask.ix[:,11:20]=1.0 mask.ix[:,21:30]=2.0 mask.ix[:,31:40]=3.0 m
mask=pan.DataFrame(index=np.arange(0,100),columns=np.arange(1,91))
mask.ix[:,1:10]=0.0
mask.ix[:,11:20]=1.0
mask.ix[:,21:30]=2.0
mask.ix[:,31:40]=3.0
mask.ix[:,41:50]=4.0
mask.ix[:,51:60]=5.0
mask.ix[:,61:70]=6.0
mask.ix[:,71:80]=7.0
mask.ix[:,81:90]=8.0
也许不是最优雅的方法,但它创建了我想要的数组
然而,当我尝试使用imshow或pcolor绘制它时,我得到了一个错误。因此:
fig=plt.figure()
ax=fig.add_subplot(111)
image=ax.imshow(mask)
fig.canvas.draw()
产生错误:“TypeError:图像数据无法转换为浮点”
用pcolor替换imshow会产生以下错误:“AttributeError:‘float’对象没有‘view’属性”
但是,当我用其他任何东西(比如随机数)替换mask中的he值时,它的绘图效果很好:
mask=pan.DataFrame(values=rand(100,90),index=np.arange(0,100),columns=np.arange(1,91))
fig=plt.figure()
ax=fig.add_subplot(111)
image=ax.imshow(mask)
fig.canvas.draw()
产生预期的标准彩色斑点(无误差) 这里的问题是,数据帧中充满了对象,而不是数字。如果执行
mask.dtypes
,则可以看到它。如果要使用pandas
数据帧,请通过指定数据类型创建mask
:
mask=pan.DataFrame(index=np.arange(0,100),columns=np.arange(1,91), dtype='float')
否则,pandas
无法知道所需的数据类型。更改之后,您的代码应该可以工作
但是,如果只想用整数测试颜色贴图,那么最好使用简单的numpy
数组:
mask = np.empty((100,90), dtype='int')
mask[:, :10] = 0
mask[:, 10:20] = 1
...
当然,也有一些较短的方法来填充。例如:
mask[:] = np.arange(90)[None,:] / 10