IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Création d'un icône proportionnel


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    géomaticienne
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Création d'un icône proportionnel
    Bonjour à tous,

    Je créée une webmap et je souhaiterais aussi créer mes propres symboles :

    J'ai une couche qui répertorie un certain nombre de points dans des polygones pays. Ces points peuvent prendre 4 valeurs différentes (1 2 3 4).

    Pour la représentation, j'aimerais faire un icône en cercle proportionnel, qui varie en fonction du nombre de points dans un pays ET de la valeur que le point a (1 2 3 4). Donc dans un pays, il y aurait 1 icône séparé en 4 "jauges". Dans l'idéal ces 4 jauges sont de couleur différente.

    Pour l'instant, j'arrive à sélectionner les points qui se trouvent dans un même pays. Je vous joins le bout de code déjà écrit :

    testpy.py


    Auriez-vous des pistes de réflexion et/ou idées ?

    Merci pour vos réponses !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Hé bien ta méthode te retourne bien les nombres d'occurrences des valeurs, où est le problème ?

    Note que tu peux simplifier avec le module collections:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >>> import collections
    >>> collections.Counter([1,2,3,4,3,2,1,4,3,2,4,1])
    Counter({1: 3, 2: 3, 3: 3, 4: 3})

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    géomaticienne
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Je vous remercie pour votre réponse.
    Maintenant j'en suis à la représentation graphique de mon icône. Il faut que je mette les valeurs du count_values dans un icône en attribuant une couleur par valeur.
    Cet icône serait divisé en 4 parties (selon les valeurs 1 2 3 4) et éventuellement proportionnel à ce count_values. Pensez-vous que ce soit possible ?

    Merci,

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 1000k Voir le message
    Pensez-vous que ce soit possible ?
    On ne fait pas de graphiques sur l'écran directement avec Python mais avec une bibliothèque graphique.
    Votre question devrait être reformulée en fonction de l'interface graphique que vous utilisez (et que vous ne prenez même pas la peine de mentionner) i.e. comment faire ça avec...
    Sinon en dehors d'un contexte particulier oui c'est possible (mais ça ne vous avance pas plus que ça).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    bonjour

    De même, je n'ai pas compris la question (et si il y a bien un rapport avec python)

    L'affichage/création de l'icône dépend entièrement de la technologie que tu utilises.

    une piste ?
    - existe le format svg, si ta bibliothèque graphique le reconnait. C'est du vectoriel donc il est "facile" de créé une icône complexe depuis des datas.
    - Il est possible de superposer plusieurs icônes graphiques (une statique classique + une avec le nombre ) pour représenter une icône.
    - .... et que 36 000 autres possibilités

    Citation Envoyé par 1000k Voir le message
    webmap
    Ici, le choix est html, donc pas de rapport avec python, voir plus du coté de la bibliotèque javascript utilisée ou javascript pur ou svg
    $moi= ( !== ) ? : ;

  6. #6
    Nouveau Candidat au Club
    Femme Profil pro
    géomaticienne
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci pour vos éléments de réponse. Je m'excuse si je n'ai pas été claire dans mes explications, voici l'idée générale :
    - je souhaite faire une webmap donc une carte accessible depuis internet (un exemple : https://k1000.alwaysdata.net/map_exo(2).html). Cette carte est composée de couches au format shapefile. C'est pourquoi je suis partie sur un script python, afin d'aller récupérer les données de ces couches pour pouvoir les utiliser dans l'icône que je souhaite faire.

    - je travaille sur VS Code, et n'utilise actuellement pas de bibliothèque graphique. En regardant un peu, je pense utiliser chart.js. Pensez-vous que ce soit adapté?

    - j'ai un icône mais qui n'est pas (encore) au format SVG, que j'aimerais "remplir" en fonction des valeurs présentes dans ma couche. Comme je le disais plus haut, cet icône serait donc divisé en 4 parties, où chacune est proportionnelle aux données issues de la couche shapefile. Je vous joint une illustration de cette idée : Nom : icone_ex.png
Affichages : 92
Taille : 20,0 Ko.

    J'espère avoir été plus claire

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    chart.js n'est pas pour cela ! (si je désire un camembert après ma carte : oui)

    En fait ici, tu nous montres une page html générée avec python folium, il faut donc faire des recherches à partir de cela

    Pour le svg, tu peux générer des icones svg dans le code de la page html.

    exemple qui génère un code source svg depuis python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def gen_svg(numero, size: 50, color: "#f00"):
        height = 1000
        w = 128  # visuel
        font_size = w // 4
        return f'''<?xml version="1.0" encoding="utf-8"?>
            <svg width="{w}px" height="{w}px" viewBox="0 0 100% 100%" xmlns="http://www.w3.org/2000/svg">
            <style> .no {{ font: normal {font_size}px serif; }} </style>
            <rect x="0" width="100%" height="{size}%" rx="3%" fill="{color}" />
            <circle cx="48%" cy="70%" r="{font_size//1.2}px" stroke="{color}" stroke-width="3" fill="#f75e5e"/>
            <text x="48%" y="80%" fill="#fff" class="no" text-anchor="middle">{numero}</text>
            </svg>'''
     
    print(gen_svg(4, 55, "#bb0"))  # barre à 55% de hauteur
    ici, qu'une seule barre : <rect x="0" width="100%" height="{size}%" rx="3%" fill="{color}" /> donc facile à en empiler plusieurs

    Possible aussi d'utiliser du html(et css) à la place d'un marqueur (icone ici est simple donc faisable)

    si tu cherches, tu trouveras pas mal d'exemples, mais tout ceci ce n'est pas vraiment du python, nous sommes plus dans le monde html
    $moi= ( !== ) ? : ;

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 1000k Voir le message
    J'espère avoir été plus claire
    Vous n'avez aucune idée de ce que vous utilisez...
    Dans un forum technique, on commence par se former histoire de savoir de quoi on cause sinon on ne va pas pouvoir échanger grand chose ni où poster ses demandes d'aide.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Nouveau Candidat au Club
    Femme Profil pro
    géomaticienne
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Vous n'avez aucune idée de ce que vous utilisez...
    Dans un forum technique, on commence par se former histoire de savoir de quoi on cause sinon on ne va pas pouvoir échanger grand chose ni où poster ses demandes d'aide.

    - W
    Bien que mes compétences ne se situent pas spécifiquement dans le domaine de la programmation dont je discute ici, c'est pourquoi je me tourne vers vous avec cette demande d'aide. Mon parcours académique initial est axé sur les SIG, j'ai seulement effleuré la programmation pour l'adapter à mes besoins. Je n'ai pas de formation formelle en codage, mais je suis convaincue de la légitimité de ma requête compte tenu de sa nature. Ainsi, je m'adresse respectueusement à vous, des experts, afin d'être guidée de manière opérationnelle dans la concrétisation de mon projet.

    Citation Envoyé par papajoker Voir le message
    chart.js n'est pas pour cela ! (si je désire un camembert après ma carte : oui)

    En fait ici, tu nous montres une page html générée avec python folium, il faut donc faire des recherches à partir de cela

    Pour le svg, tu peux générer des icones svg dans le code de la page html.

    exemple qui génère un code source svg depuis python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def gen_svg(numero, size: 50, color: "#f00"):
        height = 1000
        w = 128  # visuel
        font_size = w // 4
        return f'''<?xml version="1.0" encoding="utf-8"?>
            <svg width="{w}px" height="{w}px" viewBox="0 0 100% 100%" xmlns="http://www.w3.org/2000/svg">
            <style> .no {{ font: normal {font_size}px serif; }} </style>
            <rect x="0" width="100%" height="{size}%" rx="3%" fill="{color}" />
            <circle cx="48%" cy="70%" r="{font_size//1.2}px" stroke="{color}" stroke-width="3" fill="#f75e5e"/>
            <text x="48%" y="80%" fill="#fff" class="no" text-anchor="middle">{numero}</text>
            </svg>'''
     
    print(gen_svg(4, 55, "#bb0"))  # barre à 55% de hauteur
    ici, qu'une seule barre : <rect x="0" width="100%" height="{size}%" rx="3%" fill="{color}" /> donc facile à en empiler plusieurs

    Possible aussi d'utiliser du html(et css) à la place d'un marqueur (icone ici est simple donc faisable)

    si tu cherches, tu trouveras pas mal d'exemples, mais tout ceci ce n'est pas vraiment du python, nous sommes plus dans le monde html
    Je vous remercie pour votre réponse, mais j'aimerais plutôt essayer de comprendre et explorer directement les ressources disponibles dans une bibliothèque. Je précise aussi que la page HTML n'a pas encore été générée et qu'il s'agit d'un serveur Apache dédié à un serveur cartographique, qui diffusera cette carte web.
    J'ai pu obtenir un début de résultat avec la bibliothèque graphique matplotlib, et grâce aux exemples donnés! Je vais continuer d'explorer dans cette direction. Merci beaucoup pour votre aide

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 1000k Voir le message
    Bien que mes compétences ne se situent pas spécifiquement dans le domaine de la programmation dont je discute ici, c'est pourquoi je me tourne vers vous avec cette demande d'aide.
    Ce forum n'est pas une hotline où on poste des demandes d'aide mais un forum de développeurs Python où les questions tournent plutôt sur comment s'améliorer avec ce langage.

    Normalement, avant de poster, vous avez du lire des règles qui précisent cela non? Tout du moins si vous avez décidé d'entrer/poster... ce devrait être en conscience (et pas ah ben au cas où...).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    géomaticienne
    Inscrit en
    Mai 2023
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : géomaticienne
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2023
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ce forum n'est pas une hotline où on poste des demandes d'aide mais un forum de développeurs Python où les questions tournent plutôt sur comment s'améliorer avec ce langage.

    Normalement, avant de poster, vous avez du lire des règles qui précisent cela non? Tout du moins si vous avez décidé d'entrer/poster... ce devrait être en conscience (et pas ah ben au cas où...).

    - W
    Ah oui donc on est plutôt sur un cercle d'élite où les développeurs python transcendent les simples mortels pour devenir des êtres divins du code... je vois... Mes excuses d'avoir pensé que c'était un forum d'entraide! Je vous remercie tout de même pour vos éléments de réponse.

    Aurevoir

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par 1000k Voir le message
    Mes excuses d'avoir pensé que c'était un forum d'entraide!
    A partir du moment où vous ne posez pas de question sur le langage Python, vous n'êtes pas dans le "bon forum"... et si c'est juste pour de "l'entraide", tant que vous ne vous donnerez pas la peine de montrer (en décrivant le problème à résoudre plutôt que des "je veux") que ce n'est pas juste pour faire votre boulot... ou réaliser des fantasmes.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  13. #13
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 101
    Points : 4 446
    Points
    4 446
    Par défaut
    Citation Envoyé par 1000k Voir le message
    plutôt essayer de comprendre et explorer directement les ressources disponibles dans une bibliothèque.
    Je ne comprends pas le web est justement un assemblage de technologies différentes et il est impossible de faire ce que tu désires avec une seule bibliothèque (folium est déjà un assemblage python/html/javascript) et je ne compte pas shapefile.

    Citation Envoyé par 1000k Voir le message
    J'ai pu obtenir un début de résultat avec la bibliothèque graphique matplotlib, et grâce aux exemples donnés! Je vais continuer d'explorer dans cette direction
    une bibliothèque de plus pour quelqu'un qui désire se limiter au maximum minimum ?

    Avant d'explorer, il faut demander dans le bon forum quelles sont les meilleures techniques en fonction de tes attentes. Afficher des cartes avec des icônes particulières est une chose pas rare !

    Utiliser matplotlib, c'est peut-être mettre à terre le serveur si il y a 50 graphiques à générer à chaque affichage de page. La meilleure technique est très souvent de reporter le travail sur le client (minimum de python et maximum de html/javascript)
    rappel : tout cela ne nous concerne pas vraiment dans cette partie du forum
    $moi= ( !== ) ? : ;

Discussions similaires

  1. Création d'une icône à partir d'une image au format PNG
    Par Roland Chastain dans le forum Téléchargez
    Réponses: 0
    Dernier message: 25/01/2020, 04h16
  2. [OL-2010] Création formulaire - Ajout icône fichier joint
    Par Eddy96 dans le forum Outlook
    Réponses: 2
    Dernier message: 11/10/2016, 20h09
  3. Création d'une icône pour mon projet C#
    Par Johann7751 dans le forum Imagerie
    Réponses: 2
    Dernier message: 26/07/2009, 18h14
  4. Création bouton ou icône perso
    Par etorria dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/07/2008, 16h06
  5. [D7] Création d'icône multi-résolutions
    Par Bidouille dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/10/2004, 22h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo