我想让我的python代码生成一个交替颜色的图。为了解决这个问题,交替颜色是无关紧要的,所以假设它们是红色和蓝色。我创建了一个交替颜色的numpy数组,它的形状与输入x,y和z(251,251)相同。
colortuple = ('red', 'blue')
colors = np.array(
[np.array([colortuple[int((xn + yn) % len(colortuple))] for xn in range(xrange)]) for yn in range(trange)])
数组会将下列信息打印至主控台:
[['red' 'blue' 'red' ... 'red' 'blue' 'red']
['blue' 'red' 'blue' ... 'blue' 'red' 'blue']
['red' 'blue' 'red' ... 'red' 'blue' 'red']
...
['red' 'blue' 'red' ... 'red' 'blue' 'red']
['blue' 'red' 'blue' ... 'blue' 'red' 'blue']
['red' 'blue' 'red' ... 'red' 'blue' 'red']]
这也是我想要的
但是,当我将其作为facecolors参数传递给plot_surface()时
axes.plot_surface(X=x, Y=y, Z=z, facecolors=colors, linewidth=0)
所显示的图仅具有colortuple中第一个参数的颜色,在本例中为红色。x1c 0d1x
所有的4个变量{x,y,z,colors}都有相同的(251,251)形状,并且都是numpy数组。https://matplotlib.org/2.0.2/mpl_toolkits/mplot3d/tutorial.html
这个问题类似于facecolors in plot_surface matplotlib,但是我在控制台中没有收到任何错误,只是执行错误。
我做错了什么?
1条答案
按热度按时间brgchamk1#
facecolors
必须是RGB或RGBA,使用2个条目的色彩Map表更简单。上面的例子是在一个正方形网格上构建的,如果我们使用一个在x和y轴上具有不同细分数的网格,
Nx
和Ny
,看看会发生什么是很有趣的。如果
Nx
是奇数,我们需要改变0
s和1
s网格的维数。