Этот код представляет собой простой трехмерный график рассеяния набора данных радужной оболочки Fisher с добавлением дополнительной категориальной переменной:
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, которые в свою очередь имеют свойства color и width.
Теперь я пытаюсь отобразить цвета на контуры на основе моей новой переменной 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 + альфа, которое я использую, должно отобразить полностью непрозрачный черный, но это не один из цветов, которые я получаю, и я ожидаю увидеть записи легенды, описывающие вывод.
Поэтому мой вопрос: есть ли способ сделать это эстетически c отображение? Возможно, вместо использования add_trace
я должен использовать add_markers
? Есть ли способ сделать это в 2d Scatter в Plotly R? Также был бы признателен за подсказки о том, как правильно изучить Plotly для R, так как страница документации, на которую я ссылался выше, немного непрозрачна, и, похоже, меньше графических ресурсов для изучения, чем для ggplot2.