Bonjour
Je voudrais afficher un graphe en coordonnées polaire point par point.
Pas de pb pour l'afficher en une fois.
Mais lorsque j'insère une boucle , les points s'affichent dans un graphe cartésien avec un point par graphe.
Le pb se situe dans la fonction d'affichage def plot_polaire2, je ne trouve pas lequel.

Merci de votre aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 13 16:55:11 2020
 
@author: julnar
 
Nombres premiers(NP) en coordonées polaire
x,y = module, angle le même NP
une fonction est appliquée sur les angles
"""
import matplotlib.pyplot  as plt
import numpy as np
#
def plot_polaire2(titre, theta, r, xt, yt, grid=True):
    """"Affiche  r et theta en coordonnées polaires
        theta  =  liste des angles
        r = modules
    """
    # Taille de la figure figsize
    fig = plt.Figure()
    fig.add_subplot(111, projection='polar')
    fig.set_size_inches(14, 10, forward=True)
    #
    # Graphe en coordonnées polaires
    FIN = len(r)
    plt.subplot(projection='polar')
    for i in range(0, FIN):
        plt.plot(r[i], theta[i],'r.')
        plt.pause(0.01)
 
    plt.title(titre, fontsize=16)
    #Affiche les echelles s'il y en a
    plt.xticks(xt)
    plt.yticks(yt)
    #
    plt.grid(grid)
     #
#
# LIste des NP
R=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 
   61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 
   131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193,
   197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 
   271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 
   353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 
   433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 
   509, 521, 523, 541]
 
ANGLES=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 
   61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 
   131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193,
   197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 
   271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 
   353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 
   433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 
   509, 521, 523, 541]
#
TITRE = 'NP en polaire'
xt = np.arange(0, 2.0*np.pi, np.pi/6)
yt = np.arange(0, 4, 1)
#
# Theta = NP modulo de Z = 2 au 100 ieme NP
DEB = 0 
FIN = 1
for K in range(DEB, FIN):
    Z = R[K] #argument de la fonction Lambda
    TITRE = 'NP en polaire θ = NP mod '+str(Z)
    #Applique une fonction sur les angles
    F = lambda liste:[i%Z for i in liste]
    THETA = F(R) # Liste des angles
    #Appel de la fonction d'affichage en coord polaires
    plot_polaire2(TITRE, THETA, R, xt, yt, grid=True)
    #
    plt.show() # ici sinon trop de figures ouvertes en même temps