現在、Rのplot3d
libraryを使用して、10x10サイズのmatrixを３次元で表示したときに、スケールバーを固定（色もできるだけ固定）にしたグラフを作成することを目指しております。

一つのmatrix(D1とします）に対してgraphを表示する方法は以下のコードで対応できます。

```

    library(plot3D)
    matrix(rexp(100, rate=.3), ncol=10) -> D1
    persp3D(z = D1, zlim= c(-50, 50), phi = 30, contour = list(nlevels = 20, col = "yellow"), image = list(col = grey (seq(0, 1, length.out = 100))))
    
```

今私が困っている点は、仮に別のmatrix（D2とします）を作成して、再度persp3dで表示したときに各グラフの右側に表示されるスケールが違ってきてしまう点です。(ここではD1とD2をわざと別のレンジで作成しています。)

```

    matrix(rexp(100, rate=.8), ncol=10) -> D2
    persp3D(z = D2, zlim= c(-50, 50), phi = 30, contour = list(nlevels = 20, col = "yellow"), image = list(col = grey (seq(0, 1, length.out = 100))))
    
```

この結果です。[![matrixがランダム数字を含みますので、結果は毎回若干変わります](https://i.stack.imgur.com/aaHXc.png)](https://i.stack.imgur.com/aaHXc.png)

ここでは、D1(左側)のスケールは２~６でありますが、D2（右側）のスケールは0.5~2.5になっています。このスケールの違いを任意のスケール（例えば、１~5など）に固定にしたいです。webなどを参考にpersp3Dのattiributeを変更してみましたがうまくいかず、ここで質問させていただいています。

スケールを固定する方法をご存知の方がおりましたら、ご教授をお願いします。  
また、plot3d以外の別の方法であれば可能などでも、教えていただけると幸いです。

よろしくお願いします。
CC BY-SA 3.0
2017-06-05T11:56:12.530
35307
2017-06-06T02:44:02.147
11048
question
r
plot3Dのスケール範囲を固定する方法
以下のコードを試してみてください。

```

    library(plot3D)
    matrix(rexp(100, rate = .3), ncol = 10) -> D1
    persp3D(
      z = D1,
      zlim = c(-50, 50),
      phi = 30,
      contour = list(nlevels = 20, col = "yellow"),
      image = list(col = grey (seq(0, 1, length.out = 100))),
      clim = c(1,5) #ここを追加
    )
    
```

固定させたいだけなら，`clim =`で指定すればできます。ただ，climで指定した領域を超える値があった場合はNAとして扱われます。  
このパッケージは初めて使ったので，この関数のヘルプドキュメントを読みながら試してみました。この他にもカラーバーの設定について色々記載してあるので，詳しくは`?plot3D::persp3D`で確認してみてください。
CC BY-SA 3.0
2017-06-06T02:44:02.147
35327
2017-06-06T02:44:02.147
19063
35307
answer