Как я могу создать трехмерный график поверхности в R, где 3 переменные используются для координат, а 4-я переменная используется для окрашивания? - PullRequest
0 голосов
/ 18 февраля 2020

Это легко сделать, если вы пытаетесь создать трехмерный график рассеяния. Код ниже:

library(plotly)
library(tidyverse)

df = iris

plot_ly(df, 
            x=df$Sepal.Length, 
            y=df$Sepal.Width, 
            z=df$Petal.Length, 
            type="scatter3d", 
            mode="markers", 
            color=df$Petal.Width)

В результате получается:

enter image description here

Я хотел бы сделать это поверхностным графиком, но когда Я изменяю тип на «поверхность», изображение не отображается, и я получаю следующее предупреждение:

'surface' objects don't have these attributes: 'mode', 'marker'

1 Ответ

0 голосов
/ 18 февраля 2020

Для построения поверхности plot_ly ожидает, что z будет матрицей. Вы можете указать цвет с помощью матрицы surfacecolor. plotly::schema()$traces$surface$meta$description имеет некоторую полезную информацию:

Данные, описывающие координаты поверхности, задаются в z. Данные в z должны быть {2D массив}. Координаты в x и y могут быть 1D {массивами} или {2D массивами} (например, для отображения параметрических поверхностей). Если не указано в x и y, координаты x и y предполагаются линейными, начиная с 0 с единичным шагом. Цветовая шкала соответствует значениям z по умолчанию. Для пользовательских цветовых шкал используйте surfacecolor, который должен быть {2D массив}, где его границы можно контролировать с помощью cmin и cmax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...