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 :

Problème pcolor avec print sous r2014b


Sujet :

MATLAB

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut Problème pcolor avec print sous r2014b
    Bonjour à tous,

    depuis que je suis passé sous la version r2014b de Matlab, je n'arrive plus à sauvegarder correctement mes pcolor avec la fonction print.
    La figure compilée à l'écran est correcte mais une fois enregistrée elle alisse apparaitre des carrés blancs : voir pièce jointe.
    Je vous ai joins le résultat au format .png car en .emf la taille finale fait presque 26Mo (ce qui est énorme comparé à ce que j'avais sous r2008a).

    Si ca peut vous aider je vous donne mon code simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pcolor(x,y,z);
    shading interp;
    print(gcf,'-dmeta','-r150','image.emf');
    Je pense avoir sauté trop de versions d'un coup j'ai raté des étapes.
    Images attachées Images attachées  

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    moi je fais que des .png avec la même fonction print mais en ajoutant '-painters'.
    Tu peux donc essayer ceci voir en mettant à la place de '-dpng' le format qui te convient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(gca, '-dpng',Nomfichier,'-painters')

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Salut Eicosane,

    merci pour ton aide.
    Oui j'avais déjà essayé de rajouter '-painters' et au lieu d'avoir de gros carrés j'avais des lignes blanches un peu partout.

    J'ai besoin de faire du vectoriel c'est pour ca que je passe par '-demta'. J'ai aussi essayé '-dbmp','-deps',... et c'est vrai que je n'ai plus les carrés
    mais par contre je n'arrive pas à gérer de la même manière la taille de police de mes axes, mes propriétés ne sont pas conservées.

    Mon programme marchait très bien sous r2008a donc je ne comprend pas pourquoi ca ne marche plus sous r2014b.
    Et j'utilise cette nouvelle version pour utiliser la nouvelle colormap 'parula'.

    Au pire si quelqu'un sait comment la télécharger et l'installer sous r200a ca m'arrange d'autant plus.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    En fait je viens de trouver une solution,

    pas pour print mais pour la colormap 'parula' :

    il suffit de compiler une image avec cette fameuse colormap,
    ensuite de taper dans la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Variable = get(gcf,'colormap');
    save Variable
    Il suffit d'exporter le fichier crée dans le dossier où l'on traite nos données et d'importer
    dans le programme le fichier 'Variable'

    Ensuite au moment de créer les images rajouter
    Et c'est bon

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Citation Envoyé par Mac52 Voir le message
    Au pire si quelqu'un sait comment la télécharger et l'installer sous r200a ca m'arrange d'autant plus.
    Je ne comprends pas bien

    Si tu as la version R2014b, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cmap = parula(64);
    save('parula.mat', 'cmap');
    Puis avec la version R2008a :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    figure
     
    load parula.mat
    colormap(cmap)
    Sans la version R2014b, en partant de ce billet Matlab colorbar parula with gnuplot qui conduit à ce fichier parula.pal, on peut en extraire aisément la palette pour 64 couleurs :

    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
    fid = fopen('parula.pal', 'rt');
    X = textscan(fid, '%s', 'delimiter', '\n');
    fclose(fid);
     
    idx = find(strncmp(X{1}, 'set palette defined (\', 22));
     
    X = X{1}(idx+1:end);
     
    X = strrep(X, ',\', '');
    X = strrep(X, ')', '');
     
    X = str2num(char(X));
     
    parula = X(:,2:end);
     
    figure
    colormap(parula)
    colorbar
    Même si d'après Steve Eddins :
    Parula is the end result of a creative design effort over an extended period of time. I am pleased that you find it so appealing. The colormap is, however, MathWorks intellectual property, and it would not be appropriate or acceptable to copy or re-use it in non-MathWorks plotting tools.

    You might look at other sources of high-quality colormaps. I have listed some in my technical paper on rainbow colormaps, published earlier this month on mathworks.com.
    Source : http://blogs.mathworks.com/steve/201...#comment-27702
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur Photonique
    Inscrit en
    Mars 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Photonique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2013
    Messages : 124
    Points : 126
    Points
    126
    Par défaut
    Bonjour,

    je me permets de revenir sur le sujet qui, si l'on met la colorbar de côté, n'est toujours pas résolu.

    Quelqu'un sait-il comment utiliser print pour enregistrer correctement un pcolor ou surf ?

    La base du programme étant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pcolor(x,y,C);
    shading interp;
    print(gcf,'-dmeta','-r300','Nom_fichier','-painters');

  7. #7
    Membre habitué
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2014
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 109
    Points : 151
    Points
    151
    Par défaut
    Si tu veux faire du vectoriel, j'ai une méthode beaucoup plus simple, qui consiste à convertir ta fonction en .svg qui est le format natif de inkscape (logiciel libre surpuissant)

    http://www.mathworks.com/matlabcentr...ort-of-figures

    En cliquant sur ce lien, tu vas pouvoir télécharger la fonction plot2svg.m qui est ma foi très simple d'utilisation.

    Dans ton programme tu crées ta figure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fig1=figure('Name','<name>','NumberTitle','off');
    Ensuite tu appelles la fonction plot2svg

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot2svg('mafigure.svg','fig1',pixelfiletype)
    pixelfiletype='png' par défaut.

    Et voilà, ta figure est au format svg. Cette fonction fonction à merveille surtout avec des plots 2D-3D, typiquement des figures tracées avec pcolor ou surface.

    Tu ouvres ensuite inkscape et tu importes (ctrl+I) mafigure.svg
    Tu pourras tout modifier !! sans être forcé de relancer ton programme matlab.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour Mac52,

    pour ta question récente, voici mon code matlab qui me fait des pcolor ou du surf.
    Je n'ai eu aucun soucis avec mon code, les figures sont bien imprimées en eps (vectorielle), png, ...
    avec
    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
    Taillecolorbar=14;
    TaillelegAxis=16; % Ces deux paramètres définissent la taille des légendes (tu peux
    les modifier)
     
    figure1 = figure('PaperType','a4letter','PaperSize',[20.98 29.68],'Visible','on');
    axiss=axes('OuterPosition',[0 0.00172413793103448 1 1],'FontSize',16, 'CLim',[-1 1]);
     
    box(axiss,'on');
     
    pcolor(xMesh,yMesh,Matrice)
     
    surf(xMesh,yMesh,Matrice)
     
    xlabel('x ','fontsize',TaillelegAxis,'HorizontalAlignment','Center','Rotation',0)
    ylabel('y ','fontsize',TaillelegAxis,'HorizontalAlignment','Center','Rotation',0)
    axis([min(xMesh) max(xMesh) min(yMesh) max(yMesh)]);
    colorbar('FontSize',Taillecolorbar);
    shading interp
    print(figure1,'-depsc2',fig_name,'-painters')

Discussions similaires

  1. Problème étrange avec sudo sous AIX 5.3
    Par Dosseh dans le forum AIX
    Réponses: 4
    Dernier message: 24/11/2011, 11h31
  2. Problème test avec Selenium sous IE
    Par tromaltsec dans le forum Test
    Réponses: 5
    Dernier message: 16/02/2011, 17h24
  3. [BO XI] problème images avec enregistrer sous
    Par laruda dans le forum Deski
    Réponses: 5
    Dernier message: 21/05/2010, 16h46
  4. Problème database avec Juddi sous JOnAS
    Par reneguenon dans le forum Services Web
    Réponses: 1
    Dernier message: 02/10/2009, 23h21
  5. Problème requête avec variables sous forms
    Par mikeOSX dans le forum Forms
    Réponses: 4
    Dernier message: 20/06/2008, 14h48

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