我似乎无法使传说出现在mayavi情节中。我已经创建了一个简单的3d图,但是我需要为图提供一个图例。 Matplotlib支持添加:

import matplotlib.pyplot as plt
plt.plot(x, y, z, label="my-label")


我在mayavi中没有找到任何这样的传说的可行例子。

最佳答案

由于mayavi没有用于创建图例的内置方法,因此最简单的方法是创建mavavi图形,然后将其读入matplotlib并创建一个图例。这要求您可以编程方式访问用于创建mayavi图的颜色值-当您显式指定颜色而不是让颜色循环仪自动分配颜色时,这要容易得多。

这是一个创建mayavi图形并将其传递给matplotlib然后创建图例的示例。

import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import mayavi.mlab as mlab
from mayavi.api import OffScreenEngine
import numpy as np

mlab.options.offscreen = True
e = OffScreenEngine()
e.start()
fig = mlab.figure(engine=e, size=(5000,5000), fgcolor=(0,0,0), bgcolor=(1,1,1))
mlab.view(azimuth=45, elevation=0)

n = 500
d = np.linspace(0, np.pi*8, n)

mlab.plot3d(d, np.cos(d**1.2), np.cos(d), color = colors[0])
mlab.plot3d(d, np.sin(d), np.sin(d), color = colors[1])
mlab.plot3d(d, np.sin(d)*np.cos(d), np.cos(d), color = colors[2])
mlab.plot3d(d, np.sin(d)**2, np.sin(d)**2, color = colors[3])

mlab.savefig("./example.png")

im = plt.imread("./example.png")
labels = ["One", "Two", "Three", "Four"]

elements = [Line2D([0], [0], label = l, color = c) for l, c in zip(labels, colors[:4])]
plt.imshow(im)
plt.legend(handles = elements)
plt.gca().set_axis_off()
plt.subplots_adjust(top = 1, bottom = 0, right = 1, left = 0,
            hspace = 0, wspace = 0)
plt.margins(0,0)
plt.savefig("./example.png")


colorsRGB范围内的[0.0, 1.0]值的数组。该示例使用映射到[0.0, 1.0]空间的Tableau 20 color palette。这将产生以下输出

python - 如何将图例添加到mayavi图中-LMLPHP

关于python - 如何将图例添加到mayavi图中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59750071/

10-12 19:33