【问题标题】:How to specify colors in matplotlib.pyplot.trisurf如何在 matplotlib.pyplot.trisurf 中指定颜色
【发布时间】:2017-02-11 16:12:46
【问题描述】:

我正在尝试使用 trisurf 绘制船体。我需要指定每个三角形的颜色(有很多)。这可以做到吗?我试过了,但它不起作用:

import matplotlib.pyplot as plt:

...

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_trisurf(points[:,0], points[:,1], points[:,2],
            triangles=faces, cmap=facecolors)
plt.show()

facecolors是一个带有len(faces)rows的矩阵;每行是(R,G,B)。如果我省略了cmapargument,它的绘图效果很好,但当然是单色的。

有没有可能做我想做的事?

【问题讨论】:

  • “但它不起作用”不足以描述问题。

标签: python-2.7 matplotlib


【解决方案1】:

关于颜色,你需要决定是否

  1. 您希望将数据 (points[:,2]) 与颜色图结合使用来为您的表面着色,或者如果
  2. 您想自己指定颜色。

在第一种情况下,cmap 需要是 matplotlib 颜色图而不是数组。您可以使用命名的颜色图,例如 "jet",或创建自己的颜色图。

在第二种情况下,您需要省略cmap 关键字并使用facecolors 关键字参数代替,该参数将在后台传递给Poly3DCollection。 罢工> facecolor 参数当前被忽略。在代码you can see 中,尽管facecolor 参数被正确传递到Poly3DCollection,但面部颜色随后被color 参数覆盖,这似乎不接受numpy 数组。

【讨论】:

  • 我想要的是2。我尝试使用facecolors;没有失败,但也没有使用我的颜色(它仍然以蓝色绘制)。我传递的面部颜色看起来像 [[ 0.92732552 0.86409221 0.13920713] [ 0.90771008 0.86711351 0.16366606] [ 0.36837615 0.09819653 0.11761538] ...]
  • 你是对的,facecolors 参数似乎被忽略了。对困惑感到抱歉。我试图找出原因,但它有点牵涉。
  • 有趣的是,如果我在 0-255 中传递 (R,G,B) 值(我曾经尝试过),它会失败并显示一条消息,指出这些值必须在 (0,1) .所以它会查看 facecolors,如果它错了会抱怨,但不使用它......
  • 吉普,真的。即使我操纵 matplotlib 代码以使 numpy 数组实际传递给集合,它也会被忽略。然后问题可能出现在 colors.py 中,它可能会退回到单一颜色(数组中的第一个颜色)。但无论如何,在当前版本中,根本不可能使用自定义颜色。
  • 有关于颜色问题的消息吗?或者 plot_trisurf 的任何替代方法,允许颜色由任何函数决定......?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
  • 1970-01-01
  • 2022-11-02
相关资源
最近更新 更多