embed_matplotlib2.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import numpy as np
  2. from vedo import Plotter, Points, Image, settings
  3. from vedo.pyplot import histogram, plot
  4. import matplotlib.pyplot as plt
  5. def func(w, evt=""):
  6. d = data[data > w.value]
  7. if len(d) == 0:
  8. return
  9. ############################################# Vedo Plot
  10. xy = plot(
  11. d,
  12. 1 + np.sin(d),
  13. c="purple4",
  14. lw=0,
  15. alpha=0.75,
  16. aspect=16 / 9,
  17. title="Vedo Plot of 1+sin(z) vs z",
  18. xtitle="independent variable",
  19. ytitle="dependent variable",
  20. )
  21. xy = xy.clone2d("top-right", size=0.7, ontop=False)
  22. xy.name = "myplots"
  23. ############################################# Vedo Histogram
  24. hi = histogram(
  25. d,
  26. c="orange4",
  27. alpha=1,
  28. aspect=16 / 9,
  29. title="Vedo Histogram",
  30. xtitle="stochastic variable",
  31. ytitle="frequency",
  32. label="my histogram",
  33. mc="red5",
  34. )
  35. hi.add_legend(s=1.2, alpha=0.1)
  36. hi = hi.clone2d("bottom-right", size=0.7, ontop=True)
  37. hi.name = "myplots"
  38. ############################################# Matplotlib histogram
  39. fig.clf() # clear the figure
  40. plt.hist(1-d*d, bins=20, color="green", edgecolor="black")
  41. img = Image(fig).clone2d("middle-left", size=0.4)
  42. img.name = "myplots"
  43. vplt.remove("myplots").add(xy, hi, img)
  44. #############################################################
  45. settings.default_font = "Roboto"
  46. fig = plt.figure(figsize=(8, 6)) # create a matplotlib figure
  47. msh = Points(np.random.randn(1000, 3)).ps(5).c("blue5")
  48. data = msh.points[:, 2]
  49. vplt = Plotter(bg="w", bg2="green9", size=(900, 900))
  50. slider = vplt.add_slider(
  51. func,
  52. xmin=-1,
  53. xmax=1,
  54. value=0,
  55. title="slider",
  56. pos=1,
  57. # delayed=True, # update only when the slider is released
  58. )
  59. vplt.show(msh)
  60. vplt.close()