R:使用scatterplot3d由X,Y和Z值确定的点颜色

时间:2017-08-12 20:28:23

标签: r

我有这个使用scatterplot3d的R脚本:

library(scatterplot3d)
attach(mtcars)

rgb <- read.csv(file="rgb-data.csv",head=TRUE,sep=",")

scatterplot3d(rgb$R,rgb$G,rgb$B,
              xlim=c(0,255), ylim=c(0,255),zlim=c(0,255),
              xlab="R", ylab="G", zlab="B", pch=".",
              main=paste("Feature Space"))

rgb-data.csv的示例数据是:

R,G,B
12,48,126
127,12,48
46,127,12

它产生情节:

enter image description here

我正在寻找4个变化:

  1. 让(0,0,0)点成为立方体中最前面的点,最中心点,而不是绘图左下角的点。这可能吗?

  2. 让每个点的颜色反映每个点的R,G和B值。例如。在上述数据集中(12,48,126),该点的R值为12,G为48,B为126.这可能吗?

  3. R脚本中的X,Y和Z轴范围为0到255。但是,在图中它们的范围从0到300.我希望生成的图中轴的范围为0到255。这可能吗?

  4. “B”和“G”轴标签旋转270度。我希望它们的方向与“R”轴标签相同。这可能吗?

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了第一个问题。但是,这是代码。

  1. 使用xlimylimzlim
  2. 进行控制
  3. 使用RGB功能(请注意,您可能需要更改变量名称,因为该函数被称为rgb
  4. 使用x.ticklabsy.ticklabsz.ticklabs
  5. 进行控制

    代码

    library(scatterplot3d)
    
    R <- sample(0:255, 100)
    G <- sample(0:255, 100)
    B <- sample(0:255, 100)
    
    RGB_ <- rgb(R/255, G/255, B/255)
    
    r_ticks <- c(-255, -200, -100, 0, 100, 200, 255)
    ticks <- c(0, 50, 100, 150, 200, 250, 255)
    scatterplot3d(R, G, B,
                  xlim=c(-255, 255),
                  ylim=c(0, 255),
                  zlim=c(0, 255),
                  color=RGB_,
                  x.ticklabs=r_ticks,
                  y.ticklabs=ticks,
                  z.ticklabs=ticks)
    

    enter image description here

答案 1 :(得分:0)

  
      
  1. 让(0,0,0)点成为立方体中最前面的点,最中心,而不是图中左下角的点。这可能吗?
  2.   

angle=140中设置scatterplot3d( ),提供了与所需图表相近的内容:

enter image description here

(0,0,0)位置位于图底部的中心位置。我还设想R和G轴略微向上倾斜到0到25​​5的距离。

  
      
  1. 让每个点的颜色反映每个点的R,G和B值。例如。 (12,48,126)在上面的数据集中,该点的R值为12,G为48,B为126.这可能吗?
  2.   

基于Mo K answer,添加

color=rgb(dat$R, dat$G, dat$B, maxColorValue = 255)
如果将原始变量重命名为scatterplot3d( )

dat会产生预期的效果,即

dat <- read.csv(file="rgb-data.csv",head=TRUE,sep=",")
  
      
  1. R脚本中的X,Y和Z轴范围为0到255。但是,在图中它们的范围从0到300.我希望生成的图中轴的范围为0到255。这可能吗?
  2.   

Mo K answer有效。添加

ticks <- c(0, 50, 100, 150, 200, 250, 255)

然后

x.ticklabs=ticks,
y.ticklabs=ticks,
z.ticklabs=ticks

scatterplots3d( )

  
      
  1. “B”和“G”轴标签旋转270度。我希望它们的方向与“R”轴标签相同。这可能吗?
  2.   

我还没有找到解决方案。