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

MATLAB Discussion :

Insertion rigoureuse des figures MATLAB dans Word


Sujet :

MATLAB

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Par défaut Insertion rigoureuse des figures MATLAB dans Word
    Bonjour,

    Dans mon manuscrit de thèse, je m'aperçois que je manque de rigueur dans l'insertion de mes figures matlab et le résultat non souhaité est que j'ai des figures insérées dans word avec les labels, le titre, ou encore la légende qui n'ont pas tous la même taille au niveau des caractères.

    Je m'explique sur la procédure que je fais. J'obtiens mes figures à l'aide d'un plot. Puis, je modifie les propriétés (à savoir labels, le titre, ou encore la légende ) de ma figure avec faisant "figure properties" puis je copie ma figure en faisant "copy figure" avant ou après avoir fait undock sur ma figure. Ensuite, dans word, je bidouille avec format pour essayer d'obtenir des images à la même taille.

    Je pense que ma méthode est fortement perfectible et qu'il faut que je sorte mes images tous à la même taille avant de les mettre dans word.

    Questions :

    1) Pouvez-vous me conseiller sur la façon de procéder pour garder les propriétés de mes figures toutes identiques (notamment la taille des polices de caractères) dans Word ?

    2) Une idée serait de lancer mes plots via du code et notamment print pour que tous les propriétés des figures soient identiques. Mais est-ce qu'il n'y a pas une façon de procéder à la main où l'on puisse surveiller la taille de la figure en sortie ?

    Merci d'avance pour vos conseils.

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    vaste question, quelques conseils :

    1/ créer une figure en lui donnant les paramètres qui vont bien (en particulier ceux concernant l'impression/copie "paper") dès le début :
    position, PaperUnits, PaperPosition, PaperOrientation, PaperOrientation

    2/ il y a également des valeurs par defaut que tu peux positionner avant le tracé :
    DefaultLineLineWidth, DefaultTextFontName, DefaultTextFontSize, DefaultAxesFontName, DefaultAxesFontSize, sOptions.TaillePolice

    3/ pour la recopie dans word, je te conseille de l'automatiser
    soit en utilisant la fonction matlab publish
    soit en utilisant l'automation (à condition de travailler sous windows) et la fonction print

    4/ afin de t'affranchir de la définition et du ratio de ton écran, décoche la case "match figure screen size" dans matlab/preferences/figure copy template/copy option
    tu trouvera d'ailleurs dans le menu figure copy template certaines options pouvant t'aider dans ta démarche

    je te conseille d'abord d'écrire une fonction "creerFigure" que tu utilisera toujours à la place de "figure", et qui initialise ta figure selon les point 1 et 2 ci dessus

    voila en gros les principaux axes

    Fabien

    PS : va voir aussi sur matlab central, il y a peut être des partages de fonctions sur le sujet

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Par défaut
    Salut,
    Je pense que Le Fab a très bien résumé les méthodes existantes.
    Je te conseil de jeter un coup d'oeuil à ce code dans mathworks:
    http://www.mathworks.com/matlabcentr...rdFromMatlab.m
    http://www.mathworks.com/matlabcentr...wordfrommatlab

    Ce code te permet de lancer une session Word et de copier tes valeurs et figures.
    Pour les figures je te conseil de les ouvrir (voir le code de WriteToWordFromMatlab) de les mettre dans le format que tu veux puis de les insérer à l'aide de la fonction FigureIntoWord(ActXWord,gcf);. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     hFig = figure;
        figpos = get(0,'ScreenSize');
        set(hFig, 'Position',[figpos(1) figpos(2) figpos(3) figpos(4)]/1.2)
        logoimg=imread('mon_logo.jpg');
        image(logoimg);
        set(gca,'ytick',[])
        set(gca,'xtick',[])
        set(gca, 'xlim', [1 size(logoimg,2)]);
        set(gca, 'ylim', [1 size(logoimg,1)]);
        set(gca, 'ydir', 'reverse');
        FigureIntoWord(ActXWord,gcf);
        close(gcf)
     
        ActXWord.Selection.InsertBreak; %pagebreak
    Sinon deuxième solution c'est d'effectuer une capture d'écran grâce à cette contribution :
    http://www.mathworks.com/matlabcentr...screen-capture

    Et de coller ton image dans ton documents word en récupérant la sortie de screen-capture avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    figure;
    imshow(Sortie_de_ScreenCapture)
    FigureIntoWord(ActXWord,gcf);

    Mehdi

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Par défaut
    Merci pour vos réponses. Voici mon retour.

    Par rapport aux conseils de FAb :

    Pour les points 1 et 2, j'ai pour ma part déjà enregistrer toutes mes figues dans des fichiers .fig. A quel endroit est-ce que je peux régler ces paramètres (position, PaperUnits, PaperPosition, PaperOrientation, PaperOrientation, DefaultLineLineWidth, DefaultTextFontName, DefaultTextFontSize, DefaultAxesFontName, DefaultAxesFontSize, sOptions.TaillePolice) ? De plus, j'espère que je n'ai pas à relancer à nouveau les fonctions plot.

    Pour le point 3, là, aussi est-ce que je peux faire ces manips alors que j'ai déjà mes fichiers .fig ?

    Pour le point 4, c'est bon. J'ai pu régler ce point.

    Par rapport aux conseils de Medhi :

    Cette idée d'utiliser la fonction FigureIntoWord m'a l'air très interessant. Par contre, j'aurais besoin de vos lumières pour l'utiliser. Une fois, le fichier WriteToWordFromMatlab téléchargé, comment est-ce que je peux faire pour installer cette fonction FigureIntoWord et l'utiliser sur les figures .fig que j'ai enregistré et que j'aimerais inséré dans mon mémoire en word ?

    Merci pour votre aide

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Par défaut
    Bonjour, pouvez-vous m'aider à exploiter les conseils fournis par Fab et Medhi ?

    Je vous remercie pour votre aide.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Par défaut
    Bonjour,

    Citation Envoyé par bendesarts
    Pour les points 1 et 2, j'ai pour ma part déjà enregistrer toutes mes figues dans des fichiers .fig. A quel endroit est-ce que je peux régler ces paramètres (position, PaperUnits, PaperPosition, PaperOrientation, PaperOrientation, DefaultLineLineWidth, DefaultTextFontName, DefaultTextFontSize, DefaultAxesFontName, DefaultAxesFontSize, sOptions.TaillePolice) ? De plus, j'espère que je n'ai pas à relancer à nouveau les fonctions plot.

    Pour le point 3, là, aussi est-ce que je peux faire ces manips alors que j'ai déjà mes fichiers .fig ?
    Pour modifier les propriétés d'une figure que tu as enregistré tu peux faire de cette façon:
    -Tu ouvres la figure via Matlab.
    -Tu écris dans ta fenêtre de commande mesPropriétésFigure = get(gcf)

    Tu vas ensuite pouvoir commencer à tripatouiller dans les propriétés de ta figure pour les régler comme il te chante.

    Ce n'est qu'une première piste, en effet je ne connais pas parfaitement la manipulation des figures, je ne sais par exemple pas commence régler les paramètres "par défaut".

    Je suppose que le plus intéressant serait de faire ça sous forme de fonction, qui ouvrirait une figure, changerait les paramètres désirées, enregistrerait la figure puis fermerait la figure. Tu pourrais ainsi utiliser ta figure fonction sur tout un répertoire plutôt que de toutes les faire une par une.

    NB: petite correction en rouge.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Par défaut
    Je suppose que le plus intéressant serait de faire ça sous forme de fonction, qui ouvrirait une figure, changerait les paramètres désirées, enregistrerait la figure puis fermerait la figure. Tu pourrais ainsi utiliser ta figure sur tout un répertoire plutôt que de toutes les faire une par une.
    Cà m'irait très bien.

    Merci pour vos lumières pour m'aider à faire ce procédé de manière à harmoniser tous les champs de mes figures insérées dans un document word.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    542
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 542
    Par défaut
    Dans l'aide de matlab, j'ai trouvé celà mais celà ne m'aide pas beaucoup car cà ne m'a pas permis de redimensionner toutes mes figures de manières identiques.

    Default Settings

    I want to export all of my figures using the same size. Is there some way to do this so that I don't have to set the size for each individual figure?

    You can set the default value for any property by adding a line to startup.m. Adding the following line sets the default figure size to 4-by-3 inches.

    set(0,'DefaultFigurePaperPosition',[0 0 4 3]);
    In your call to set, combine the word Default with the name of the object Figure and the property name PaperPosition.
    Pour rappel, voilà ce que je cherche :
    Comment je peux procédér pour redimensionner toutes mes figures de manière identique afin de pouvoir les insérer dans un document word ?

    Merci pour votre aide.

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Voici le squelette du programme :

    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
    pathname = ...
     
    d = dir(fullfile(pathname, '*.fig'));
     
    for n = 1:numel(d)
     
       % Ouverture .fig 
       fig = openfig(fullfile(pathname, d(n).name));
     
       % Application des propriétés communes à toutes les fenêtres
       set(fig, ...); 
     
       % Insertion dans Word
     
       % Fermeture .fig 
       delete(fig);
     
    end

  10. #10
    Membre actif
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Par défaut
    Bonjour bendesarts,

    Je pense qu'il ont bien expliqué ce qu'il fallait faire.
    L'idée générale est de créer un script capable de relire toutes tes figures sauvegardées au format .fig et d'éditer leurs propriétés pour les standardiser. Pour cela tu as simplement besoin de récupérer le handle sur la figure chargée (ce qui se fait généralement par le mot clé gcf).

    Ensuite, tu édites tes propriétés de façon (il faut regarder quelles propriétés tu veux éditer dans la liste des figure properties).

    Si je devait juste rajouter un tout petit complément, personnellement, je sauvegarde toujours mes images au format jpg ou png à l'aide de la fonction hgexport qui fonctionne bien mieux que le saveas.

    Bon courage

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Citation Envoyé par betaplus Voir le message
    je sauvegarde toujours mes images au format jpg ou png
    Le JPEG ne doit être utilisé que pour des objets Image. Pour des graphiques avec les autres objets (Line, Patch, Surface…), il faut utiliser le GIF ou le PNG.

Discussions similaires

  1. copie de figure MATLAB dans Word
    Par bendesarts dans le forum MATLAB
    Réponses: 5
    Dernier message: 01/11/2018, 11h32
  2. [Débutant] Mise en page figure MATLAB dans Word
    Par Mac52 dans le forum MATLAB
    Réponses: 12
    Dernier message: 07/04/2015, 17h26
  3. [Débutant] Insérer proprement des figures MATLAB dans un rapport
    Par abel413 dans le forum MATLAB
    Réponses: 10
    Dernier message: 17/08/2013, 09h24
  4. [VBA-W]Inserer des diapos PPT dans word
    Par dev81 dans le forum VBA Word
    Réponses: 5
    Dernier message: 26/04/2007, 18h08
  5. [VBA-E]Copier des éléments excel dans word
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2007, 10h11

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