R: en utilisant rgl pour générer des tracés 3D rotables qui peuvent être consultés dans un navigateur web?

dans le monde du paquet de statistiques R, rgl me permet de générer des tracés 3d que je peux tourner avec ma souris. Y a-t-il un moyen que je puisse exporter ces parcelles dans un format portable, les charger dans un navigateur web ou un autre outil tiers et les tourner là? Je suis particulièrement intéressé par la solution de navigateur web car cela me permettra de partager les tracés sur un wiki interne.

si rgl ne permet pas cela, y a-t-il d'autres bibliothèques ou stratégies qui permettraient moi, pour accomplir cette?

23
demandé sur SetJmp 2011-10-05 19:42:33

6 réponses

vous pouvez essayer le paquet vrmlgen . Il va produire des fichiers VRML 3d qui peuvent être affichés avec un plugin de navigateur; vous pouvez trouver un plugin à VRML Plugin et Détecteur de navigateur .

une fois que vous avez installé un plugin, essayez ceci:

require(vrmlgen)
example(bar3d)

NB: le code de l'exemple ne s'est pas ouvert automatiquement dans un navigateur pour moi (RStudio, Win7, Chrome) parce que le chemin a été coupé. Vous pourriez avoir besoin d'utiliser:

require(stringr)
browseURL(str_replace_all(file.path(outdir, 'barplot.html'), fixed('\'), '/'))

si vous ne voulez pas installer un plugin VRML, vous pouvez utiliser X3DOM à la place. Vous aurez besoin d'un convertisseur , mais vos utilisateurs devraient être en mesure de les visualiser avec juste un navigateur (moderne). Vous devrez peut-être modifier le code suivant pour obtenir les bons chemins:

setwd(outdir)
aopt <- 'C:/PROGRA~1/INSTAN~1/bin/aopt' # Path to conversion program
vrml <- 'barplot.wrl'
x3dom <- 'barx.html'
command <- paste(aopt, '-i', vrml, '-N', x3dom)
system(command)
# LOG   Avalon   Init: 47/616, V2.0.0 build: R-21023 Jan 12 2011
# LOG   Avalon   Read url
# LOG   Avalon   Read time: 0.074000
# ============================================
# Call: writeHTML with 1 param 
# Write raw-data to barx.html as text/html
# WARNING   Avalon   Run NodeNameSpace "scene" destructor and _nodeCount == 3
# WARNING   Avalon   Try to remove nodes from parents
# WARNING   Avalon   PopupText without component, cannot unregister
# WARNING   Avalon   Avalon::exitSystem() call and node/obj left: 0/3331
browseURL(file.path(outdir, 'barx.html'))
setwd(curdir)
14
répondu pete 2011-10-14 20:18:56

pour une solution simple essayez ceci...

x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)

plot3d(x,y,z, 
       col=rainbow(1000),
       type = "s",
       size=1,
       xlab = "x", 
       ylab = "y", 
       zlab = "z",
       box=T)

# This writes a copy into temporary directory 'webGL', and then displays it
browseURL(paste("file://", writeWebGL(dir=file.path("C:/Your-Directory-Here/", "webGL"), width=700), sep=""))

ouvrir l'index.fichier html dans Firefox ou navigateur similaire qui supporte HTML5 et WebGL

13
répondu mark 2012-08-08 13:55:10

la suggestion de Pete vaut la prime. La lfr-déviation n'est pas vraiment nécessaire, il est plutôt facile de générer le fichier xml avec sprintf et amis.

le problème est la vitesse: en comparaison, j'ai eu une IRM stomacale Couleur-code avec 17000 sphères (pour voxels), qui a été très sensible sur mon écran avec rgl.

quand je l'ai porté sur x3dom, le système s'est figé. Un ensemble réduit avec 450 sphères fonctionne:

http://www.menne-biomed.de/uni/x3dsample.html

Le support du navigateur

est incohérent. Certains des exemples de la page d'exemple x3dom fonctionnent le mieux avec (croyez-le ou non) Internet Explorer + Flash 11. Vérifiez l'exemple de lumière dynamique.

mon exemple fonctionne, mais semble à plat sur Firefox 7.0.1. Le meilleur est toujours Chrome.

ajouté plus tard: Voici un autre exemple:

Stomach3D as Zip

le fichier x3d qu'il contient peut être affiché même avec des graphiques embarqués en utilisant le visualiseur de réalité instantanée. Le fichier html généré à partir de celui-ci se charge parfois, mais ne peut pas être tourné.

2
répondu Dieter Menne 2011-10-16 18:06:09

pour interagir dynamiquement avec un graphique dans une page Web, vous aurez besoin d'un certain type de programme java ou flash pour faire l'interaction, puis avoir le code d'écriture R/données qui peuvent être compris par ce programme. à Cette question et ses réponses ressemble à un bon endroit pour commencer.

1
répondu Greg Snow 2017-05-23 12:17:03

pour la flexibilité ultime, j'ai eu beaucoup de chance en utilisant traitement . Il a été écrit à l'origine en java, mais a été porté de façon stable en javascript , et plus expérimentalement en python et même quelques autres.

http://processingjs.org

http://processing.org

il utilise le HTML5 <canvas> élément pour traiter votre code de traitement à la volée. Vous pouvez soit créer un lien vers votre code de visualisation dans un autre fichier, soit l'écrire directement dans votre fichier html (ça me rappelle Sweave!).

aussi, il y a une ressource énorme d'exemples open source en ligne. Par exemple:

http://openprocessing.org

Enfin, voici l'essentiel j'ai mis en place pour démontrer la configuration de base. Il suffit de télécharger l' en cours de traitement.js fichier dans le même dossier que l'essentiel et ouvrez votre navigateur.

https://gist.github.com/1295842

il ressemblera à ceci:

enter image description here

1
répondu John Colby 2011-10-18 16:26:57

il y a quelques millions d'années (OK, 2005) j'ai écrit du code R pour décharger des primitives graphiques dans Mathematica (!!) format graphique, qui pourrait ensuite être intégré et visionné avec le LiveGraphics3D Java plug-in. Je n'ai pas essayé de l'utiliser en 6 ans, mais je pourrais essayer de ressusciter s'il y avait de l'intérêt.

PS voici les résultats de help(package="LG3d") :

get.live.jar            Download live.jar Java archive
LG.display              Display Live3D graphics in a browser
LG.html.head            header and footer files for LiveGraphics HTML
                        files
LGmobius                Draw a 3D mobius strip
LG.open                 open and close LiveGraphics3D files
LG.plot.profiles        Plot likelihood surface + profiles using
                        Live3D
LGtorus                 Draw a torus in LG graphics system
LGtoruswrap             Utility functions for LGtorus
mma.brace               Low-level graphics primitives for
                        LiveGraphics3D
mma.edge                change edge style
mma.persp               Output a perspective plot to a LiveGraphics3D
                        file
mma.point               Medium-level graphics primitives for
                        LiveGraphics3D
mma.polygon             draw a Mma/LG3d polygon
0
répondu Ben Bolker 2011-10-05 21:20:25