web-dev-qa-db-fra.com

Comment faire un histogramme 3D en R

Voici mon objectif: tracer la fréquence de y en fonction de x dans l'axe z.

Voici mes problèmes: j'ai un tableau à deux colonnes (x et y) et je dois diviser x en classes (p. Ex. 0,2 ou 0,5) et calculer le fréquence de y pour chaque classe de x. L'intrigue doit apparaître comme un x-y tracé dans le plan "au sol" et la fréquence dans l'axe z. Cela pourrait être comme une surface ou un histogramme 3D. J'ai essayé de le faire en utilisant le hist3D fonction de plot3D package mais je ne sais pas ce que je fais mal.

Voici un exemple de ce que j'essaie de faire:

https://www.safaribooksonline.com/library/view/r-data-visualization/9781783989508/ch06s05.html

Merci!!

14
José Ricardo

En utilisant des données simulées, cela devrait vous donner ce que vous voulez. La clé est que vous devez créer vos bacs bivariés, en utilisant la fonction cut(). Ensuite, en traitant les facteurs regroupés comme des niveaux, nous pouvons ensuite compter les combinaisons de chaque niveau de facteur en utilisant la fonction table() comme ci-dessous:

library(plot3D)

##  Simulate data:
set.seed(2002)
x <- rnorm(1000)
y <- rnorm(1000)

##  Create cuts:
x_c <- cut(x, 20)
y_c <- cut(y, 20)

##  Calculate joint counts at cut levels:
z <- table(x_c, y_c)

##  Plot as a 3D histogram:
hist3D(z=z, border="black")

##  Plot as a 2D heatmap:
image2D(z=z, border="black")

3D2D

25