Nothing
Plot3D = plot3D = function(Data,Cls,UniqueColors,size=2,na.rm=FALSE,Plotter3D="rgl",...){
#plot3D(Data,Cls)
#A wrapper for Data with systematic clustering colors for a x,y,z plot combined with a classification
#INPUT
#Data [1:n,1:d] matrix with d=3, if d>3 only the first 3 dimensions are taken
#Cls [1:n] numeric vector of the classification of data
#\dots further arguments to be processed by \code{rgl::plot3d}
#OUTPUT
#author: MT 2018, edited 2020
if (!is.matrix(Data)) {
warning('Data is not a matrix. Using as.matrix()')
Data = as.matrix(Data)
}
nrows = dim(Data)[1]
ncols = dim(Data)[2]
if (ncols < 2) {
stop('Data has to have at least two columns')
}
NoColors = FALSE
if (missing(Cls)) {
Cls = rep(1, nrows)
NoColors = TRUE
} else{
if (!is.vector(Cls)) {
Cls = as.vector(Cls)
warning('Cls should be a vector.Calling as.vector')
}
if (!is.numeric(Cls)) {
Cls = as.numeric(Cls)
warning('Cls should be a numeric.Calling as.numeric')
}
if(length(Cls)!=nrows){
warning(paste0('Length of Cls (',length(Cls),') does not match number of rows (',nrows,'). Cls is replicated until it matches the number of rows.'))
Cls=rep(Cls,1000)[1:nrows]
}
UniqueC = unique(Cls)
m = length(UniqueC)
if(missing(UniqueColors))
LcolUnique = DataVisualizations::DefaultColorSequence[1:m]
else
LcolUnique=UniqueColors
Lcol = Cls
for (i in 1:m)
Lcol[Cls == UniqueC[i]] = LcolUnique[i]
}
if (ncols >= 3) {
x = Data[, 1]
y = Data[, 2]
z = Data[, 3]
switch(Plotter3D,
"rgl"={
rglgiven=requireNamespace('rgl')
if (NoColors){
if(isTRUE(rglgiven)){
rgl::plot3d(x, y, z,size = size, ...)
}else{
p=plotly::plot_ly(x=x, y=y, z=z, type="scatter3d", mode="markers",size = size,...)
return(p)
}
}else{
if(isTRUE(rglgiven)){
rgl::plot3d(x, y, z, col = Lcol,size = size, ...)
}else{
p=plotly::plot_ly(x=x, y=y, z=z, type="scatter3d", mode="markers", color=as.factor(Cls),colors=unique(Lcol,fromLast = F),size = size,...)
return(p)
}
}
},"plotly"={
plotlygiven=requireNamespace('plotly')
if (NoColors){
if(isFALSE(plotlygiven)){
rgl::plot3d(x, y, z,size = size, ...)
}else{
p=plotly::plot_ly(x=x, y=y, z=z, type="scatter3d", mode="markers",size = size,...)
return(p)
}
}else{
if(isFALSE(plotlygiven)){
rgl::plot3d(x, y, z, col = Lcol,size = size, ...)
}else{
p=plotly::plot_ly(x=x, y=y, z=z, type="scatter3d", mode="markers", color=as.factor(Cls),colors=unique(Lcol,fromLast = F),size = size,...)
return(p)
}
}
})
if (ncols > 3) {
warning('Only the first three columns are used.')
}
}
if (ncols == 2) {
# ggplot2
#plot.new()
x = Data[, 1]
y = Data[, 2]
DF=data.frame(x=x,y=y)
p <- ggplot(DF, aes(x, y))
if (NoColors){
p <- p + geom_point(color='blue',size=size,na.rm=na.rm,...)
# p <- p + geom_text_repel(aes(label=colnames(Forecasts)), size=3)
# plot(x, y, pch = 19, ...)
}else{
p <- p + geom_point(color=Lcol,size=size,na.rm=na.rm,...)
# p <- p + geom_text_repel(aes(label=colnames(Forecasts)), size=3)
# plot(x, y, col = Lcol, pch = 19, ...)
}
p <-p+coord_fixed(ratio = 1)+theme_bw()
return(p)
}
} #END FUNCTION
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.