code: def __init__(self):
      app.Canvas.__init__(self, keys="interactive", size=(800, 800))
  
      # Define several Line visuals that use the same position data
      # but have different colors and transformations
      colors = [
          color,
          (1, 0, 0, 1),
          (0, 1, 0, 1),
          (0, 0, 1, 1),
          (1, 1, 0, 1),
          (1, 1, 1, 1),
      ]
  
      self.lines = [
          visuals.LineVisual(pos=pos, color=colors[i]) for i in range(6)
      ]
  
      center = STTransform(translate=(400, 400))
  
      self.lines[0].transform = center
  
      self.lines[1].transform = center * STTransform(scale=(1, 0.1, 1))
  
      self.lines[2].transform = (
          center
          * STTransform(translate=(200, 200, 0))
          * STTransform(scale=(0.3, 0.5, 1))
      )
  
      self.lines[3].transform = (
          center
          * STTransform(translate=(-200, -200, 0), scale=(200, 1))
          * LogTransform(base=(10, 0, 0))
          * STTransform(translate=(1, 0, 0))
      )
  
      self.lines[4].transform = MatrixTransform()
      self.lines[4].transform.rotate(45, (0, 0, 1))
      self.lines[4].transform.scale((0.3, 0.3, 1))
      self.lines[4].transform.translate((200, 200, 0))
  
      self.lines[5].transform = (
          STTransform(translate=(200, 600, 0), scale=(5, 5))
          * PolarTransform()
          * LogTransform(base=(2, 0, 0))
          * STTransform(scale=(0.01, 0.1), translate=(4, 20))
      )
  
      self.show()
  
file_path: vispy/examples/basics/visuals/line_transform.py
imports: import numpy
  from vispy import app, gloo, visuals
  from vispy.visuals.transforms import STTransform, LogTransform, MatrixTransform, PolarTransform
label_desc: Use image node_id 1 to create a new Canvas object from inherited base classes: app with example: obj = Canvas()