discussion_1190.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from vedo import *
  2. import matplotlib.colors as colors
  3. import matplotlib.pyplot as plt
  4. settings.default_font = "Antares"
  5. man = Mesh(dataurl + "man.vtk")
  6. h_knees = -0.5
  7. over_limit = 1.5
  8. under_limit = -1.4
  9. # let the scalar be the z coordinate of the mesh vertices
  10. scals = man.vertices[:, 2]
  11. # build a complicated colour map
  12. c1 = plt.cm.viridis(np.linspace(0.0, 0.7, 128))
  13. c2 = plt.cm.terrain(np.linspace(0.5, 0.8, 128))
  14. c = np.vstack((c1, c2))
  15. cmap = colors.LinearSegmentedColormap.from_list("heights", c)
  16. cmap.set_over(color="red")
  17. cmap.set_under(color="orange")
  18. norm = colors.TwoSlopeNorm(h_knees, vmin=under_limit, vmax=over_limit)
  19. mapper = plt.cm.ScalarMappable(norm=norm, cmap=cmap)
  20. # build look up table
  21. lut = build_lut(
  22. [(v, mapper.to_rgba(v)[:3]) for v in np.linspace(under_limit, over_limit, 128)],
  23. above_color=cmap.get_over()[:3],
  24. below_color=cmap.get_under()[:3],
  25. vmin=under_limit,
  26. vmax=over_limit,
  27. )
  28. man.cmap(lut, scals)
  29. man.add_scalarbar3d(above_text="Above Eyes", below_text="Below Heels")
  30. man.scalarbar = man.scalarbar.clone2d("center-left", size=0.3) # make it 2D
  31. show(man, axes=1, viewup="z")