web-dev-qa-db-ja.com

ggplotを使用して3D散布図をプロットする方法は?

「プロット」機能を使用しようとしましたが、私の場合はまったく機能しません。 「ggplot」が機能しているのは2Dの場合ですが、もう1つの軸を追加するとエラーが発生します。この問題を解決するには?

ggplot(data,aes(x=D1,y=D2,z=D3,color=Sample))+geom_point()

これでもう1つの軸を追加して3Dプロットを取得する方法は?ありがとうございました。

14
M Arjun

質問にplotlyでタグ付けし、plotlyで使用しようとしたと言ったので、plotlyで有効なコードソリューションを提供すると役立つと思います。

プロットするデータの作成:

set.seed(417)
library(plotly)
temp <- rnorm(100, mean=30, sd=5)
pressure <- rnorm(100)
dtime <- 1:100

Plotlyのscatter3dタイプを使用して3D散布図をグラフ化する:

plot_ly(x=temp, y=pressure, z=dtime, type="scatter3d", mode="markers", color=temp)

以下をレンダリングします。 enter image description here

ggplotは他の人が注目しているように、それ自体では3Dグラフィックレンダリングをサポートしていません。

22
onlyphantom

可能な解決策は gg3D です。

gg3Dは、ggplot2を拡張して3Dプロットを作成するために作成されたパッケージです。それはまさにあなたが求めていることをします:それはggplotに3番目の軸を追加します。私はそれが非常に良くて使いやすいと思います、そしてそれは私が限られたニーズのために使うものです。

基本的なプロットを作成するためにビネットから取られた例

devtools::install_github("AckerDWM/gg3D")

library("gg3D")

## An empty plot with 3 axes
qplot(x=0, y=0, z=0, geom="blank") + 
  theme_void() +
  axes_3D()

Empty 3D axes

## Axes can be populated with points using the function stat_3D.

data(iris)
ggplot(iris, aes(x=Petal.Width, y=Sepal.Width, z=Petal.Length, color=Species)) + 
  theme_void() +
  axes_3D() +
  stat_3D()

iris data

Ggplotを使用しない他のオプションがあります。たとえば、openGLでプロットするための拡張plot3Drglを備えた優れた plot3D パッケージ。

11
Marco Stamazza