2012-11-20 3 views
4

Je préfère souvent utiliser un texte clair sur le colorthème de fond sombre dans les IDE. Quand je trace quelque chose dans R, le colorscheme par défaut pour les tracés est le texte/bordures/points noirs sur fond blanc. J'essayais de changer cela par défaut, de préférence pour les périphériques spécifiques appelés par défaut par R (X11cairo, RStudioGD), tout en conservant les valeurs par défaut normales pour les périphériques de «sortie» tels que pdf et png.Définir les paramètres graphiques par défaut pour le périphérique

Ma question est double: (1) Comment puis-je définir les paramètres graphiques par défaut? et (2) Puis-je le faire uniquement pour des appareils particuliers?

Par exemple, je peux mettre easilly le colorscheme dans le dispositif actuel avec par:

par(
    bg = "black", 
    col = "white", 
    col.axis = "white", 
    col.lab = "white", 
    col.main = "white", 
    col.sub = "white") 

plot(1) 

Crée le blanc sur la parcelle noire comme prévu, et comme prévu la réinitialisation de l'appareil revient aux valeurs par défaut:

dev.off() 
plot(1) 

J'ai essayé de mettre ce qui suit dans mon .Rprofile:

graphics:::par(
    bg = "black", 
    col = "white", 
    col.axis = "white", 
    col.lab = "white", 
    col.main = "white", 
    col.sub = "white") 
graphics:::plot(1,type="n",xlab="",ylab="",axes=FALSE) 
graphics:::text(1,1,"Plotting area") 

Ce qui fonctionne un peu, sauf qu'il ouvre une fenêtre de tracé au démarrage qui peut être ennuyante et dans RStudio il n'ouvre pas le périphérique RStudio mais une fenêtre x11. De plus, si je ferme cette fenêtre, les paramètres sont réinitialisés. Je préférerais pouvoir avoir cette "colorscheme" utilisée par défaut chaque fois que j'ouvre une fenêtre de traçage avec par exemple le périphérique par défaut de RStudio.

+0

Cela ne répond pas à votre question, mais ma solution est d'avoir une fonction 'setnicepar' dans mon' .Rprofile'. – csgillespie

+0

Simplement pour réduire le long code 'par' à' setnicepar() 'chaque fois que vous tracez? –

+0

Oui, mon 'setnicepar' peut être appelé avec des arguments. Par exemple, 'setnicepar (mfrow = c (2,2))' – csgillespie

Répondre

2

Les paramètres graphiques durent toute la vie de l'appareil, c'est pourquoi vous les voyez réinitialisés lorsque vous fermez le périphérique graphique et commencez un nouveau tracé.

La meilleure approche pour ce que vous voulez faire est probablement d'écrire une fonction wrapper pour les périphériques sur lesquels vous souhaitez modifier les paramètres par défaut. Cette fonction démarre le périphérique d'intérêt et définit les paramètres par défaut pour vous. Vous pouvez ensuite définir votre fonction comme périphérique par défaut en utilisant options(device=mygrdevice)mygrdevice est la fonction personnalisée. Ensuite, si aucun périphérique n'est ouvert et que vous exécutez une commande de traçage, votre fonction s'exécutera, ouvrira l'appareil et définira les paramètres par défaut. Mais si vous ouvrez un périphérique différent tel que pdf ou png alors les valeurs par défaut seront en place.

Vous pouvez également utiliser setHook pour définir une fonction d'accrochage à exécuter lors d'un traçage, mais vérifier sur quel périphérique est courant serait probablement plus de travail que cela en vaut la peine. Si un crochet est disponible pour le démarrage d'un dispositif de traçage, cela pourrait être une meilleure option.

0

J'ai trouvé moi-même une réponse pour l'appareil RStudio au moins, mais c'est un peu un bidouillage. Je peux remplacer les fonctions de l'appareil dans .Rprofile pour modifier les paramètres par juste après son ouverture:

RStudioGD <- function() 
{ 
    .Call("rs_createGD") 
    graphics:::par(
     bg = "black", 
     col = "white", 
     col.axis = "white", 
     col.lab = "white", 
     col.main = "white", 
     col.sub = "white") 
} 

Il semble que ce n'est pas vraiment la façon la plus appropriée de le faire bien?

Questions connexes