【问题标题】:Specific colors for multiple surface plot多曲面图的特定颜色
【发布时间】:2020-11-19 23:42:33
【问题描述】:

https://plotly.com/r/3d-surface-plots/ 中的示例为多个表面。这是这个例子的代码。

library("plotly")
z <- c(
  c(8.83,8.89,8.81,8.87,8.9,8.87),
  c(8.89,8.94,8.85,8.94,8.96,8.92),
  c(8.84,8.9,8.82,8.92,8.93,8.91),
  c(8.79,8.85,8.79,8.9,8.94,8.92),
  c(8.79,8.88,8.81,8.9,8.95,8.92),
  c(8.8,8.82,8.78,8.91,8.94,8.92),
  c(8.75,8.78,8.77,8.91,8.95,8.92),
  c(8.8,8.8,8.77,8.91,8.95,8.94),
  c(8.74,8.81,8.76,8.93,8.98,8.99),
  c(8.89,8.99,8.92,9.1,9.13,9.11),
  c(8.97,8.97,8.91,9.09,9.11,9.11),
  c(9.04,9.08,9.05,9.25,9.28,9.27),
  c(9,9.01,9,9.2,9.23,9.2),
  c(8.99,8.99,8.98,9.18,9.2,9.19),
  c(8.93,8.97,8.97,9.18,9.2,9.18)
)
dim(z) <- c(15,6)
z2 <- z + 1
z3 <- z - 1

fig <- plot_ly(showscale = FALSE)
fig <- fig %>% add_surface(z = ~z)
fig <- fig %>% add_surface(z = ~z2, opacity = 0.98)
fig <- fig %>% add_surface(z = ~z3, opacity = 0.98)

如何使每个表面都具有特定的颜色?即第一个表面都是红色的,第二个表面是蓝色的,依此类推。 任何帮助将不胜感激!

【问题讨论】:

    标签: r colors plotly


    【解决方案1】:

    您可以使用参数colorscale,如下所示:

    
    fig <- plot_ly(showscale = FALSE)
    fig <- fig %>% add_surface(z = ~z, colorscale = list(c(0,1),c("rgb(107,184,255)","rgb(0,90,124)")) )
    fig <- fig %>% add_surface(z = ~z2, opacity = 0.98, colorscale = list(c(0,1),c("rgb(255,107,184)","rgb(128,0,64)")))
    fig <- fig %>% add_surface(z = ~z3, opacity = 0.98, colorscale = list(c(0,1),c("rgb(107,255,184)","rgb(0,124,90)")))
    fig
    
    

    对于每个表面,您可以指定两种颜色:一种较深的颜色和一种较浅的颜色。它们之间的对比对应于每个表面的不同高度。表面的高度在 0 和 1 之间缩放。指定的颜色对分配给每个表面的相应底部和顶部高度。

    您可以使用 RGB 颜色的色调来获得您想要的颜色。查看thisthis 网站以获取有关RGB 色标的更多信息。

    我的代码改编自 this page,它与您的一个非常相似的示例一起工作,但只有两个表面。

    基于同样的逻辑,可以根据cmets中的要求扩展层数:

    z4 <- z + 2 
    z5 <- z + 3 
    z6 <- z + 4
    
    fig <- plot_ly(showscale = FALSE)
    fig <- fig %>% add_surface(z = ~z, colorscale = list(c(0,1),c("rgb(107,184,255)","rgb(90,90,124)")) )
    fig <- fig %>% add_surface(z = ~z2, opacity = 0.98, colorscale = list(c(0,1),c("rgb(255,107,184)","rgb(128,0,64)")))
    fig <- fig %>% add_surface(z = ~z3, opacity = 0.98, colorscale = list(c(0,1),c("rgb(107,255,184)","rgb(0,124,90)")))
    fig <- fig %>% add_surface(z = ~z4, opacity = 0.98, colorscale = list(c(0,1),c("rgb(182,142,242)","rgb(104,3,255)")))
    fig <- fig %>% add_surface(z = ~z5, opacity = 0.98, colorscale = list(c(0,1),c("rgb(247,226,157)","rgb(255,192,7)")))
    fig <- fig %>% add_surface(z = ~z6, opacity = 0.98, colorscale = list(c(0,1),c("rgb(129,212,247)","rgb(12,177,247)")))
    fig
    
    

    上面产生的代码:

    【讨论】:

    • 我不知道如何添加颜色。我有 5 层,当我尝试从您引用的网站中添加颜色时,我的整个情节就一团糟。
    • 很抱歉听到这个消息。共享 5 层绘图的新代码(和数据,如果是的话),这样我们就可以尝试找出问题所在。我发布的代码适用于您共享的示例。
    • 我对如何定义下部和上部颜色感到困惑。我的意思是如何获得组合。在同一个示例中,采用z4 &lt;- z+2z5 &lt;- z+3z6 &lt;- z+4。如何为这些定义颜色?
    • 那么你是如何找出其他颜色的?我的意思是组合
    • 是的,来自我分享给你的第二个链接。我在右边的竖条上挑了一个通用的颜色,然后我选择了两种不同的同色深浅,一种较浅,一种较深,并在适当的地方填写 rgb 代码...我根据您的要求更新了答案跨度>
    猜你喜欢
    • 2021-03-16
    • 2013-12-11
    • 2014-01-03
    • 1970-01-01
    • 2015-12-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多