2016-09-19 6 views
2

Ich möchte ein 3D-Oberfläche Grundstück mit Plotly machen. Das geht recht gut, aber die Werte auf der x- und y-Achse machen keinen Sinn. Sie sind viel höher als sie sein sollten. Ich habe eine Matrix für den Plot verwendet, die x- und y-Werte sind die Zeilen- und Spaltennamen und der z-Wert (Elevation genannt) natürlich die Matrix selbst. Plotly scheint die Werte der x- und y-Daten nicht zu verwenden. Die x- und y-Werte liegen in der Matrix zwischen 0 und 6. Dies ist eine kleine Probe meiner Matrix:Plotly 3D-Oberflächengraph hat falsche X- und Y-Achsen-Werte

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 

Dies ist der Code, den ich verwendet haben:

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 

Die Grafik sieht wie folgt aus, mit falschen x- und y-Achse, bin ich nicht sicher, wie Ich kann korrekte Werte erhalten.

3d surface plot

+1

Die x- und y-Werte sind korrekt. Sie zeigen die Anzahl der Zeilen und Spalten Ihrer Daten an. Der Wert 'm.dune [1,1]' ist die z Höhe an der Position x = 1; y = 1. Also nehme ich an, dass Ihre Matrix ein 'dim()' über 'c (70,80)' hat. Vergleiche plot_ly (z = Vulkan [1:20, 1:20]/100, type = "Oberfläche") 'vs.' plot_ly (z = Vulkan [1:50, 1:50]/100, type = "Oberfläche ")". – Jimbou

+0

Ah, das erklärt die x- und y-Werte, irgendeine Idee, wie man den realen Wert zeigt? Die Zellengröße beträgt 0,05, vielleicht kann ich die Zellengröße mit den x- und y-Werten multiplizieren? – Marinka

Antwort

3

Als Jimbou die Werte auf der x in seinem Kommentar darauf hingewiesen und y-Achse sind die Anzahl der Zeilen und Spalten Ihrer Matrix. Da ich eine Zellgröße von 0,05 habe, repräsentieren die Werte nicht den richtigen Abstand. Um die korrekte Entfernung anzuzeigen, müssen Sie die korrekten x- und y-Werte als Liste im Plotgraph hinzufügen. Diese x- und y-Werte müssen die gleiche Größe haben, ansonsten wird ein Teil der Graphen abgeschnitten. Der Code zum Abrufen der korrekten x- und y-Werte lautet wie folgt:

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