Поскольку Вы не предоставили данных, невозможно дать ответ, относящийся непосредственно к Вашему вопросу. Всегда рекомендуется использовать dput()
для предоставления хотя бы части ваших данных. Изображение данных не дает полезной информации. Также укажите пакеты, которые вы загрузили. В этом случае кажется вероятным, что вы загрузили plot3D
, который содержит функцию scatter3D
.
Страница руководства для scatter3D
содержит ответы на все ваши вопросы (?scatter3D
), но она подробная и может быть сложной для понимания. Изучая примеры, представленные на странице руководства, кажется, что следующее выполняет то, что вы хотите. Он использует набор данных USArrests
, предоставленный R:
library(plot3D)
data(USArrests)
UP <- cut(USArrests$UrbanPop, breaks=quantile(USArrests$UrbanPop), include.lowest=TRUE)
Это загружает набор данных и создает категориальную переменную из переменной UrbanPop
. Теперь основной сюжет:
with(USArrests, scatter3D(Murder, Assault, Rape, colvar = as.numeric(UP),
col = c("red", "green", "blue", "violet"), theta = 60, phi = 20,
xlab = "Murder", ylab = "Assault", zlab = "Rape", main = "USA arrests",
cex = 1, pch=16, bty = "g", ticktype = "detailed",
d = 2, clab = "Urban Population", adj = 0.5, font = 2,
colkey=list(at = c(1.4, 2.1, 2.9, 3.6), side = 1,
addlines = TRUE, length = 0.75, width = 0.5,
labels = c("1st Quart", "2nd Quart", "3rd Quart", "4th Quart"))))
Это создает базовый график с кружками, окрашенными квартилем процента городского населения для каждого штата. Получение позиций для маркировки легенды (at=
) требует проб и ошибок. Теперь добавим текстовые метки:
with(USArrests, text3D(Murder, Assault, Rape, colvar = as.numeric(UP),
col = c("red", "green", "blue", "violet"), colkey=FALSE,
labels = state.abb, cex = .75, adj=-.5, add=TRUE))
Мы используем state.abb
, который представляет собой двухсимвольную аббревиатуру для каждого состояния. ![3D-график](https://i.stack.imgur.com/XTvYx.png)
person
dcarlson
schedule
17.07.2021