gpt4 book ai didi

r - 如何映射分类变量以在 R Plotly 中为 3D 散点图中的点的轮廓着色?

转载 作者:行者123 更新时间:2023-12-04 10:25:01 26 4
gpt4 key购买 nike

这段代码制作了一个简单的 Fisher iris 数据集的 3d 散点图,并添加了一个额外的分类变量:


library(plotly)
roots <- factor(round(runif(n = dim(iris)[2],min = -.499,max = 2.499)))
my_iris <- cbind(data.frame(roots), iris)


plot_ly() %>%
add_trace(data = my_iris, type = 'scatter3d', mode = "markers",
x = ~Sepal.Length,
y = ~Petal.Length,
z = ~Sepal.Width,
color = ~Species,
colors = c("red","blue","green")

)



通过查看此帮助页面: https://plot.ly/r/marker-style/

我发现您可以为这些点添加一个轮廓,如下所示:
plot_ly() %>%
add_trace(data = my_iris, type = 'scatter3d', mode = "markers",
x = ~Sepal.Length,
y = ~Petal.Length,
z = ~Sepal.Width,
color = ~Species,
colors = c("#00FA9A34","#B22222dd","#00BFFFee"),
marker = list(

line = list(
color = "#aabbffdd",
width = 2
)

)
)


看这个网站 https://plot.ly/r/reference/#scatter3d提出线条是 scatter3d 标记的属性的想法,而 scatter3d 标记又具有颜色和宽度属性。

现在我尝试根据我的新 roots 将颜色映射到轮廓。多变的,
plot_ly() %>%
add_trace(data = my_iris, type = 'scatter3d', mode = "markers",
x = ~Sepal.Length,
y = ~Petal.Length,
z = ~Sepal.Width,
color = ~Species,
colors = c("#00FA9A34","#B22222dd","#00BFFF66"),
marker = list(

line = list(
color = ~roots,
colors = c("#000000ff","#f00f3355","#dd22ccbb"),
width = 2
)

)
)


它不太有效:我使用的第一个 hex+alpha 值应该映射到完全不透明的黑色,但这不是我得到的颜色之一,我希望看到描述输出的图例条目。

所以我的问题是:有没有办法做这种美学映射?也许而不是使用 add_trace我应该使用 add_markers ?有没有办法在 Plotly R 的 2d 散射中做到这一点?也很感激有关如何正确学习 R 的 Plotly 的提示,因为我上面链接的文档页面有点不透明,而且似乎与 ggplot2 相比,学习 plotly 的重要资源更少。

最佳答案

在我看来, plotly 不允许指定标记轮廓的颜色。

对于标签,您可以更改悬停文本。
或者使用注释:

  • https://plotly.com/r/text-and-annotations/

  • 也许这不能解决您的问题,但我希望它以某种方式有用。
    # Yours data

    library(dplyr)
    library(plotly)
    roots <- as.character(round(runif(n = dim(iris)[2],min = -.499,max = 2.499)))
    my_iris <- cbind(data.frame(roots), iris)


    # Changing plot
    my_iris %>%
    plot_ly(type = 'scatter3d', mode = "markers") %>%
    add_trace(x = ~Sepal.Length,
    y = ~Petal.Length,
    z = ~Sepal.Width,
    color = ~Species,
    colors = c("#00FA9A34","#B22222dd","#00BFFF66"),
    marker = list(
    line = list(
    color = ~roots,
    colors = c("#000000","#E35F13","#E3138B"),
    width = 6
    )
    ),
    hoverinfo = 'text',
    text = ~paste('</br> Species: ', Species,
    '</br> Petal Length: ', Petal.Length,
    '</br> Petal Width: ', Petal.Width,
    '</br> Roots: ',roots)
    )

    输出:

    image

    关于r - 如何映射分类变量以在 R Plotly 中为 3D 散点图中的点的轮廓着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60664020/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com