如何在R中创建3D表面图,其中3个变量用于坐标,第4个变量用于着色?

问题描述 投票:0回答:1

如果您要绘制3D散点图,这很容易做到。下面的代码:

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”时,图像无法渲染,并且出现以下警告:

'surface' objects don't have these attributes: 'mode', 'marker'
r ggplot2 plotly html-lists data-visualization
1个回答
0
投票

[为了绘制表面,plot_ly期望z是矩阵。您可以使用surfacecolor矩阵指定颜色。 plotly::schema()$traces$surface$meta$description有一些有用的信息:

描述表面坐标的数据在z中设置。z中的数据应为{2D数组}。 xy中的坐标可以可以是1D {arrays}或{2D arrays}(例如,以图形形式表示参数表面)。如果xy中未提供,则x和y坐标为假设是线性的,从0开始以一个单位步进。色标默认情况下对应于z值。对于自定义色标,请使用surfacecolor应该是{2D数组},其边界可以是使用cmincmax控制。

© www.soinside.com 2019 - 2024. All rights reserved.