2 votes

Définir la plage de couleurs dans persp3d en R

Je suis vraiment nouveau à R et je veux créer une image comme celle que j'ai ajoutée ici, mais j'ai besoin d'avoir la plage de couleurs de 0 à 1, actuellement c'est réglé automatiquement, dans l'image c'est de 0,2 à 0,6. Voici mon code R que j'utilise: Mat.csv est une matrice 2D avec des valeurs dans [0,1]

library(plot3D)
mydata <- read.csv("D:/output/Mat.csv")
mydata <- as.matrix(mydata)
pdf("D:/output/surfaceplot.pdf")
mycols <- colorRampPalette( c("#ff0000", "#00ff00") ) 
persp3D(z = mydata, theta = 120, zlim=c(0,1))
dev.off()

Graphique d'example

0voto

cuttlefish44 Points 4560

L'argument clim résoudra votre problème. (persp3D est une fonction du package plot3D, mais persp3d est une fonction du package rgl. Soyez prudent.) colorRampPalette renvoie une fonction qui interpolera un ensemble de couleurs données pour créer le nombre de couleurs spécifié en argument de la nouvelle fonction. Vous pouvez donc définir le vecteur de couleurs de persp3D en donnant en argument la sortie de la nouvelle fonction renvoyée par colorRampPalette. Par exemple, persp3D(..., col = mycols(256)) or, mycolv <- mycols(256); persp3D(..., col = mycolv)

library(plot3D)

## exemples de données
x <- seq(-pi, pi, by = 0.1)
y <- seq(-pi, pi, by = 0.1)
mesdonnees <- outer(x, y, function(x, y) cos(x) * sin(y))
range(mesdonnees)   # environ -1 ~ 1

## fonction de couleur
mescouleurs <- colorRampPalette(c("blue", "red", "green", "yellow"))

## tracé
persp3D(z = mesdonnees, ticktype = "detailed", col = mescouleurs(256))                  # gauche
persp3D(z = mesdonnees, ticktype = "detailed", col = mescouleurs(256), clim=c(-2, 2))   # droite

entrer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X