2016-09-19 1 views
2

음영으로 3D 표면 플롯을 만들고 싶습니다. 이것은 꽤 잘 진행되고 있지만 x 축과 y 축의 값은 의미가 없습니다. 그들은 그들이해야하는 것보다 훨씬 높습니다. 줄거리를 위해 행렬을 사용했습니다. x와 y 값은 행과 열 이름이고 z 값 (고도라고 함)은 물론 행렬 자체입니다. Plotly는 x와 y 데이터의 값을 사용하지 않는 것 같습니다. x와 y 값의 범위는 행렬에서 0부터 6까지입니다.3 차원 표면 그래프에 잘못된 x 및 y 축 값이 있습니다.

head(m.dune)  
>  1.90 1.95 2 2.05 2.01 2.15 
> 0  NA NA NA NA NA NA 
> 0.05 NA NA NA NA NA NA 
> 0.10 1.14 1.14 NA NA NA NA 
> 0.15 1.15 1.15 1.15 1.15 1.16 1.16 
> 0.20 1.16 1.16 1.16 1.16 1.16 1.17 
> 0.25 1.17 1.17 1.17 1.17 1.18 1.18 

이것은 내가 사용 된 코드입니다 : 이것은 내 행렬의 작은 샘플입니다

dune.plot <- plot_ly(z = m.dune, type = "surface") %>% 
layout(
    scene=list(
    xaxis=list(title='x (m)'), 
    yaxis=list(title='y (m)'), 
    zaxis=list(title='Elevation (m)'))) 
dune.plot 

그래프가 잘못 x와 y 축과,이처럼 보이는, 내가 얼마나 확실하지 않다 올바른 값을 얻을 수 있습니다. Jimbou 자신의 의견에서 지적

3d surface plot

+1

x 및 y 값이 정확합니다. 데이터의 행과 열 수를 표시합니다. 값'm.dune [1,1]'는 위치 x = 1에서의 높이입니다. y = 1이다. 따라서 나는 여러분의 행렬이'c (70,80)'에 대해'dim()'을 가지고 있다고 가정합니다. plot_ly (z = 화산 [1:20, 1:20]/100, type = "surface")'vs.'plot_ly (z = 화산 [1:50, 1:50]/100, type = "표면 ")'. – Jimbou

+0

아, x 값과 y 값, 실제 값을 표시하는 방법에 대해 설명합니다. 셀 크기는 0.05입니다. 셀 크기에 x 값과 y 값을 곱할 수 있습니까? – Marinka

답변

3

x와 y 축의 값은 행렬의 행과 열 수 있습니다. 셀 크기가 0.05이므로 값은 정확한 거리를 나타내지 않습니다. 올바른 거리를 표시하려면 올바른 x 및 y 값을 플롯 그래프의 목록으로 추가해야합니다. 이 x와 y 값은 같은 크기 여야합니다. 그렇지 않으면 그래프의 일부가 잘립니다. 올바른 x 및 y 값을 얻는 코드는 다음과 같습니다.

y <- x <- as.numeric(rownames(m.dune)) 
# More rows than column, and the x and y should have the same size 

dune1.plot <- plot_ly(z = m.dune1, x= x, y=y, type = "surface") %>% 
layout(
    scene=list(
    xaxis=list(title='x (m)'), 
    yaxis=list(title='y (m)'), 
    zaxis=list(title='Elevation (m)'))) 
dune1.plot