Partage
  • Partager sur Facebook
  • Partager sur Twitter

Matplotlib tracer anneaux de couleurs différentes

    21 mai 2015 à 19:30:35

    Bonjour,

    Je n'ai pas l'habitude de faire ce genre de plot du coup je demande un coup de pouce:

    je dispose d'un vecteur ou chaque point représente une position radiale différente et la valeur représente son amplitude. Par exemple:

    rayon=np.linspace(0,1,100)

    amplitude=np.linspace(0,100,100)

    maintenant je voudrais représenter ce vecteur sous forme d'anneau concentrique ou chaque anneau représente un rayon et une amplitude différente par une couleur différente (un contour quoi).

    Sauriez vous comment faire ?

    • Partager sur Facebook
    • Partager sur Twitter
      22 mai 2015 à 8:14:12

      Salut.

      Il faut utiliser matplotlib.patches.

      #!/usr/bin/python3
      # -*- coding: utf-8 -*-
      
      import matplotlib.pyplot as plt
      import matplotlib.patches as mpatches
      
      if __name__ == '__main__':
          fig, ax = plt.subplots()
      
          n = 10
          radius = range(n, 0, -1)
          for c, r in enumerate(radius):
              ax.add_patch(mpatches.Circle((0, 0),
                  radius=r,
                  fc=[c/n] * 3,)
              )
      
          ax.set_aspect('equal')
          ax.axis([-n, n, -n, n])
          ax.get_xaxis().set_visible(False)
          ax.get_yaxis().set_visible(False)
          plt.show()
      



      • Partager sur Facebook
      • Partager sur Twitter
        22 mai 2015 à 14:50:18

        Merci pour ta réponse!

        Mais ta méthode me semble sortir des outils surdimensionnés pour ce besoin "simple". En fait en réfléchissant un peu, voilà comment faire :

        r=np.linspace(0,100,400)
        a0=np.linspace(100,0,400)
        theta = np.linspace(0, 360, 3600)
        
        r, theta = np.meshgrid(r, theta) a = a0*r/r # ca fait une sorte de meshgrid, c'est une astuce plt.contourf(r*np.cos(theta), r*np.sin(theta), a,100)

        hop, et voilà !

        Mais merci quand même pour ton aide !

        Bye

        • Partager sur Facebook
        • Partager sur Twitter
          22 mai 2015 à 16:02:36

          bonjour

          chez moi la ligne 6 provoque une erreur

          >>> a = a0*r/r

          Warning (from warnings module):

            File "__main__", line 1

          RuntimeWarning: invalid value encountered in true_divide

          • Partager sur Facebook
          • Partager sur Twitter
            22 mai 2015 à 16:09:20

            Il suffit juste de relancer le programme. Et pour afficher le graphe, place un plt.show() à la fin du code :)
            • Partager sur Facebook
            • Partager sur Twitter
            Précepte: Le mieux est l'ennemi du bien

            Matplotlib tracer anneaux de couleurs différentes

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown