dncdd
2017-Apr-13 11:25 UTC
[R] 回复: 回复: how to plot three dimension data to filled contour plot or surface plot in R Ask Question
x<-c(0.8,1.8,2.8)?
y<-c(0.8,1.8,2.8)?
z<-c(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9)?
nx<-sprintf("x%s",x)
ny<-sprintf("y%s",y)
nz<-sprintf("z%s",z)
v<-c(
?????0.3,?0.2,?0.1,?0,?0,?0,?0,?0,?0,
?????0.3,?0.2,?0.1,?0.2,?0.3,?0.4,?0.4,?0.5,?0.5,
?????0.3,?0.4,?0.5,?0.5,?0.6,?0.6,?0.6,?0.7,?0.7,
?????0.3,?0.2,?0.2,?0.2,?0.3,?0.2,?0,?0,?0,
?????0.3,?0.4,?0.3,?0.2,?0.3,?0.5,?0.5,?0.6,?0.6,
?????0.5,?0.4,?0.5,?0.6,?0.6,?0.7,?0.6,?0.8,?0.8,
?????0.3,?0.4,?0.4,?0.4,?0.5,?0.5,?0.5,?0.5,?0.5,
?????0.3,?0.2,?0.4,?0.5,?0.5,?0.6,?0.6,?0.7,?0.8,
?????0.3,?0.5,?0.5,?0.6,?0.7,?0.7,?0.9,?0.8,?0.9)
myarray<-array(v,?c(length(z),?length(y),?length(x)),?dimnames=list(z,y,x))
odftarget<-as.data.frame.table(myarray)
names(odftarget)?<-?c('z',?'y',?'x',?'v')
dftarget?<-?data.frame(
????z=as.numeric(as.character(odftarget$z)),
????y=as.numeric(as.character(odftarget$y)),?
????x=as.numeric(as.character(odftarget$x)),?
????v=odftarget$v
)
head(dftarget)
k?<-?16?#?number?of?contours
alpha_min_max?<-?c(0.2,?0.6)
colf?<-?colorRampPalette(rev(RColorBrewer::brewer.pal(11,?"RdBu")))
colf?<-?colorRampPalette(colpal)
#?isosurfaces?are?at?here
lev?<-?seq(min(dftarget$v),?max(dftarget$v),?length.out?=?k)
#?inner?isosurfaces?are?more?solid,?outer?ones?are?more?transparent.
#?So,?we?can?see?inner?isosurfaces?by?x-ray?vision.
alpha?<-?seq(alpha_min_max[1],?alpha_min_max[2],?length.out?=?k)
rgl::plot3d(z,?y,?x,?type?=?"n",?aspect?=?TRUE)?#?create?scene# I am
using the array here.
misc3d::contour3d(myarray,?lev,?z,?y,?x,?color?=?colf(k),?alpha?=?alpha,
smooth?=?3,?engine?=?"rgl",?add?=?TRUE)?
rgl::aspect3d(2,?1,?1)?
It works.Thank you.
------------------------------------------------------------------????dncdd via
R-help <r-help at r-project.org>?????2017?4?13?(???) 18:07????Ismail SEZEN
<sezenismail at gmail.com>????r-help <r-help at
r-project.org>????[R] ??? how to plot three dimension data to filled contour
plot or surface plot in R Ask Question
This?can?be?a?solution.?Thank?you.?Thanks?for?your?time.
------------------------------------------------------------------????Ismail?SEZEN?<sezenismail
at gmail.com>?????2017?4?13?(???)?10:05????dncdd?<dncdd at
aliyun.com>????r-help?<r-help at
r-project.org>????Re:?[R]?how?to?plot?three?dimension?data?to?filled?contour?plot?or?surface?plot?in?R??Ask?Question
On?12?Apr?2017,?at?09:08,?dncdd?<dncdd at aliyun.com>?wrote:
Sorry,?I?might?make?the?question?complicated.?
I?can?use?filled.contour()?to?plot?mini?data?1(three?dimension?on?flat?surface).?Now?my?problem?is?on?mini?data?2.?Let's?unfold?the?mini?data?2.
??r1dn???r2dn???tdn????fdn
?????x,?????y,?????z,?????v
????0.8????0.8????0.1????0.3
????0.8????0.8????0.2????0.2
????0.8????0.8????0.3????0.1
????0.8????0.8????0.4????0
????0.8????0.8????0.5????0
????0.8????0.8????0.6????0
????0.8????0.8????0.7????0
????0.8????0.8????0.8????0
????0.8????0.8????0.9????0
????0.8????1.8????0.1????0.3
????0.8????1.8????0.2????0.2
????0.8????1.8????0.3????0.1
????0.8????1.8????0.4????0.2
????0.8????1.8????0.5????0.3
????0.8????1.8????0.6????0.4
????0.8????1.8????0.7????0.4
????0.8????1.8????0.8????0.5
????0.8????1.8????0.9????0.5
????0.8????2.8????0.1????0.3
????0.8????2.8????0.2????0.4
????0.8????2.8????0.3????0.5
????0.8????2.8????0.4????0.5
????0.8????2.8????0.5????0.6
????0.8????2.8????0.6????0.6
????0.8????2.8????0.7????0.6
????0.8????2.8????0.8????0.7
????0.8????2.8????0.9????0.7
????1.8????0.8????0.1????0.3
????1.8????0.8????0.2????0.2
????1.8????0.8????0.3????0.2
????1.8????0.8????0.4????0.2
????1.8????0.8????0.5????0.3
????1.8????0.8????0.6????0.2
????1.8????0.8????0.7????0
????1.8????0.8????0.8????0
????1.8????0.8????0.9????0
????1.8????1.8????0.1????0.3
????1.8????1.8????0.2????0.4
????1.8????1.8????0.3????0.3
????1.8????1.8????0.4????0.2
????1.8????1.8????0.5????0.3
????1.8????1.8????0.6????0.5
????1.8????1.8????0.7????0.5
????1.8????1.8????0.8????0.6
????1.8????1.8????0.9????0.6
????1.8????2.8????0.1????0.5
????1.8????2.8????0.2????0.4
????1.8????2.8????0.3????0.5
????1.8????2.8????0.4????0.6
????1.8????2.8????0.5????0.6
????1.8????2.8????0.6????0.7
????1.8????2.8????0.7????0.6
????1.8????2.8????0.8????0.8
????1.8????2.8????0.9????0.8
????2.8????0.8????0.1????0.3
????2.8????0.8????0.2????0.4
????2.8????0.8????0.3????0.4
????2.8????0.8????0.4????0.4
????2.8????0.8????0.5????0.5
????2.8????0.8????0.6????0.5
????2.8????0.8????0.7????0.5
????2.8????0.8????0.8????0.5
????2.8????0.8????0.9????0.5
????2.8????1.8????0.1????0.3
????2.8????1.8????0.2????0.2
????2.8????1.8????0.3????0.4
????2.8????1.8????0.4????0.5
????2.8????1.8????0.5????0.5
????2.8????1.8????0.6????0.6
????2.8????1.8????0.7????0.6
????2.8????1.8????0.8????0.7
????2.8????1.8????0.9????0.8
????2.8????2.8????0.1????0.3
????2.8????2.8????0.2????0.5
????2.8????2.8????0.3????0.5
????2.8????2.8????0.4????0.6
????2.8????2.8????0.5????0.7
????2.8????2.8????0.6????0.7
????2.8????2.8????0.7????0.9
????2.8????2.8????0.8????0.8
????2.8????2.8????0.9????0.9
When?x?is?0.8,?y?is?0.8,?z?is?0.1,?then?v?is?0.3.??So?v?is?not?limited?by?a?function?like?v?~?f(x,y,z).?I?mean?x,y,z?is?just?like?labels?on?the?3d?space.You?have?give?me?many?suggestions.?I?think?that?maybe?scatterplot?with?colors?on?v?on?3d?space?is?a?solution.?I?will?try?it?later.?At?the?beginning,?I?was?wondering?a?3d?surface?plot?or?3d?filled.contour?on?3d?space.?I?am?not?sure?whether?it?is?possble.
First?of?all,?v?is?function?of?x,y,z?according?to?sample?above?wheter?you?accept?or?not.??Because?x,y,z?represents?coordinates?of?v?in?the?3D?space?and?if?someone?wants?to?plot?contours?between?those?points,?he/she?needs?a?v(x,y,z)?function?that?can?calculate?values?(v)?between?x,y,z?coordinates.?Let?s?get?back?to?main?question.
I?think?you?want?something?like?as?[1]?and?[2].?Your?best?shot?is?misc3d?package.?I?created?a?simple?example?how?to?plot?isosurfaces?and?you?can?find?different?strategies?to?plot?4D?data?in?3D?space?at?[3].
#??????????library(misc3d)#?let's?create?a?function?to?create?a?sample?data?to?visualizef?<-?function(x,?y,?z)?sin(x)?*?sin(y)?*?sin(z)x?<-?z?<-?seq(0,?pi,?length.out?=?15)y?<-?seq(-pi,?pi,?length.out?=?15)d?<-?expand.grid(x,?y,?z)colnames(d)?<-?c("x",?"y",?"z")d$v?<-?with(d,?f(x,?y,?z))
#?this?is?your?initial?datahead(d)
k?<-?16?#?number?of?contoursalpha_min_max?<-?c(0.2,?0.6)colf?<-?colorRampPalette(rev(RColorBrewer::brewer.pal(11,?"RdBu")))
#?isosurfaces?are?at?herelev?<-?seq(min(d$v),?max(d$v),?length.out?=?k)#?inner?isosurfaces?are?more?solid,?outer?ones?are?more?transparent.#?So,?we?can?see?inner?isosurfaces?by?x-ray?vision.alpha?<-?seq(alpha_min_max[1],?alpha_min_max[2],?length.out?=?k)
rgl::plot3d(x,?y,?z,?type?=?"n",?aspect?=?TRUE)?#?create?scenemisc3d::contour3d(f,?lev,?x,?y,?z,?color?=?colf(k),?alpha?=?alpha,??????????smooth?=?3,?engine?=?"rgl",?add?=?TRUE)rgl::aspect3d(1,?2,?1)?#?set?aspect,?y?is?different?from?x?and?z.#??????????
1-?http://stackoverflow.com/a/11319175/5578842-?http://mathematica.stackexchange.com/a/198193-?https://www.jstatsoft.org/article/view/v028i01
?[[alternative?HTML?version?deleted]]
______________________________________________
R-help at r-project.org?mailing?list?--?To?UNSUBSCRIBE?and?more,?see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE?do?read?the?posting?guide?http://www.R-project.org/posting-guide.html
and?provide?commented,?minimal,?self-contained,?reproducible?code.
[[alternative HTML version deleted]]