10
votes

Comment faire une parcelle ridiculement large

J'ai une longue série de 10000 observations que je veux visualiser. Le problème est que si je ne fais que la tracer normalement, la dimension temporelle sera écrasée et aucun des détails fins de la série temporelle que je souhaite visualiser sera apparent. Par exemple:

 plot((sin(1:10000/100)+rnorm(10000)/5)[1:100],type='l')
 plot((sin(1:10000/100)+rnorm(10000)/5)[101:200],type='l')
 plot((sin(1:10000/100)+rnorm(10000)/5)[201:300],type='l')
 .....


5 commentaires

Cela dépend de la façon dont vous écrivez cela. Est-ce à un PDF?


@Davidrobinson tout fichier image. PNG, EPS, ..., avec une forte préférence à la petite taille sur le disque. png serait gentil. Quelque chose qui peut coder sur HTML serait également agréable (par exemple, PNG peut).


Fait juste faire png (largeur = 10000, hauteur = 10000); par (mfrow = ....); terrain(...); Dev.off (); ou quelque chose de similaire ne vous donne pas assez de place pour adapter les parcelles vraiment larges?


@ThelaTemail Ce n'est pas assez large. Si je passe au-delà de largeur = 50000 il dit erreur de cairo 'valeur non valide (généralement trop gros) pour la taille de l'entrée (surface, motif, etc.)


J'ai ce problème exact et les solutions énumérées ici ne semblent pas fonctionner. Je suis un débutant R à Rstudio. Dans mon cas, j'ai besoin d'intrigue de plus d'une année de mesures horaires des données météorologiques.


3 Réponses :


4
votes

Cela pourrait être un problème spécifique au Caire, ou cela pourrait être un manque de RAM sur votre machine. Le code suivant fonctionne bien pour moi sur une machine Windows 7 avec une RAM de 8 Go.

png("wide.png", width = 1e5, height = 500)
plot((sin(1:10000/100)+rnorm(10000)/5),type='l')
dev.off()


5 commentaires

Le Caire limite la largeur / hauteur à 32767 pixels. Une largeur de 1E4 devrait bien vouloir tracer des points de données 1E4 et aidera à conserver la taille du fichier.


Je cherche probablement environ 150 000 pixels, mais je reçois cette erreur: > Dev.off () Dimension image prise en charge maximale est de 65500 pixels *** glibc détectés *** / usr / lib64 / r / bin / exécuté / R: Double libre ou corruption (! Prev): 0x000000000278F950 *** alors il va jeter tout ce type "Backtrace".


Veuillez vous ajouter le code exact que vous utilisez pour créer le fichier de tracé sur votre question, avec votre système d'exploitation et la version de R que vous utilisez.


@Richicotton en fait PNG fonctionne, seul JPG ne fonctionne pas pour ce nombre de pixels.


Eh bien, les JPGS sont plus adaptés pour stocker des photos que les parcelles. Utilisez PNG ou un format vectoriel.



8
votes

Une alternative que vous pourriez envisager est SVG, qui produira quelque chose de meilleure qualité que PNG / JPEG dans tous les cas.

Quelque chose comme xxx

produira Terrain très large, un peu plus de 1 Mo de taille, qui rend assez bien en chrome.

Remarque La largeur et la hauteur sont en pouces ici.

PS SVG offre également le potentiel de graphismes interactifs. Je viens de voir un bel exemple permettant à l'utilisateur de sélectionner une région d'une série de longue date pour zoomer sur, voir la figure 22 dans Graphics Dynamique et interactif pour le Web: le paquet de Gridsvg , un projet de papier par Paul Murrell et Simon Potter.


7 commentaires

SVG est un format vectoriel, alors je pense que la réponse à votre question est arbitraire.


Si vous ouvrez le fichier SVG généré dans un éditeur de texte, vous verrez les dimensions spécifiées comme largeur = "144000pt" hauteur = "504pt" , donc 72 points par pouce. J'ai essayé de l'éditer à width = "144000px" hauteur = "504px" qui semblait fonctionner d'accord, mais je ne sais pas si c'est une bonne idée!


Avez-vous trouvé que c'est laggé lorsque vous l'ouvrez avec Chrome?


C'est bon pour moi avec chrome, mais lent sur Firefox


J'utilise RStudio et que vous utilisez ce code produit l'erreur: "Erreur dans dev.off (): impossible d'arrêter le périphérique 1 (le périphérique NULL). Il ne produit pas non plus la sortie SVG. Il crée un fichier SVG mais c'est vide.


Vous obtenez cette erreur si vous appelez dev.off () lorsque seule la fenêtre de tracé RStudio est ouverte, par exemple. Comme vous n'avez pas ouvert le périphérique SVG ou que vous avez déjà exécuté dev.off () une fois, fermez le périphérique SVG. Assurez-vous d'exécuter l'appel SVG () Appel pour ouvrir le périphérique SVG avant d'exécuter le code de traçage.


En outre, assurez-vous d'ouvrir le fichier créé ( rplot001.svg ) avec un navigateur, vous devrez peut-être cliquer avec le bouton droit de la souris et sélectionnez pour ouvrir une autre application que par défaut. ouvrir avec chrome.



1
votes

J'irais sur un itinéraire alternatif. Tout d'abord, quel est exactement le point de voir tout l'intrigue à Hi-Res? Si vous recherchez une sorte d'anomalies ou d'irrégularités, c'est ce que le traitement des données est pour :-). Pensez à quelque chose comme trouver tous les x> 3sigma ou faire une FFT, etc.

Ensuite, si vous voulez vraiment examiner le tout à l'œil de l'œil, que diriez-vous de rédiger un code R-TCLTK ou d'utiliser dynamicgraph ou iplots ou zoom < / code> Pour produire un graphique interactif que vous pouvez faire défiler à travers "Live".

ETA: IIRC RStudio a des outils pour le défilement et le zoom du graphique interactif.


2 commentaires

@ user2763361 Le fichier zoom fonctionne bien avec le tracé de base graphiques. Il vous permet de modifier les échelles X et Y (à la fois de la plage et de la résolution) de manière interactive. Je crois que iplots fait aussi.


Visualiser tout cela est important pour moi. J'ai besoin de voir l'évolution précise de la série temporelle pour chaque point de données. Pourriez-vous donner quelques exemples sur ce que vous avez recommandé? De plus, je veux le mettre dans un rapport HTML ou quelque chose qui n'est pas conditionné à être ouvert à l'époque.