2

R スタジオを使用して plotlyR で mesh3D プロットを作成しようとしていますが、メッシュにカラー スケールを作成する方法に問題があります。

コードを使用した素敵なメッシュ プロットがあります。

zmean <- apply(faces, MARGIN=1, function(row){mean(points[row,3])})

facecolor = colour_ramp(
    brewer_pal(palette="RdBu")(9)
)(rescale(x=zmean))

(上記は、プロットするためだけのWebサイトから見つけましたが、必要なメッシュカラースケールではありません)http://moderndata.plot.ly/trisurf-plots-in-r-using-plotly/http: //moderndata.plot.ly/trisurf-plots-in-r-using-plotly/

p <- plot_ly(
    x = points[, 1], y = points[, 2], z = points[, 3],
    i = faces[, 1]-1, j = faces[, 2]-1, k = faces[, 3]-1,
    type = "mesh3d",
    facecolor = "red",
)

p

顔の色、強度、またはカラースケールが何をするのかよくわかりませんが、 xyz 配列の各ポイントについて測定した bi と呼ばれる値に基づいて、異なるカラースケールをメッシュにマッピングしたいと思います(つまり、各 x = points[, 1], y = points[, 2], z = points[, 3] ポイントには、データフレームで bi の値が割り当てられています)。そして、私は色をスケーリングしたい

vert$colour[vert$bi<= 0.5] <- "red"
vert$colour[vert$bi> 0.5 & vert$bi<=1.5] <- "green"
vert$colour[vert$bi>= 1.5] <- "purple"

または輪郭をブレンドする方法で類似しています。

これをプロットする方法について何か考えはありますか?

それが役立つ場合、ここにプロットがあります

https://plot.ly/~neilsrini/1377/points-2-vs-points-1/

4

1 に答える 1

3

ここに興味がある人にとっては解決策です

    p1 <- plot_ly(
    x = points[, 1], y = points[, 2], z = points[, 3],

    i = faces[, 1]-1, j = faces[, 2]-1, k = faces[, 3]-1,

    type = "mesh3d",

   facecolor = face$colour

    )

上記は、プロットするコードです。face$color は以下のように作成しました。

以下の関数を使用して、各面を測定ベクトル bi の平均値に変換します

    zmean <- apply(faces, MARGIN=1, function(row){mean(bipts[row,1])})

次に、zmean の値を色に変換します

    face$colour[zmean<= 0.5] <- "#800026" etc etc
于 2016-08-26T22:59:51.690 に答える