Fehler: ggplot2 nicht wissen, wie man mit Daten der Klasse matrix?
Wie kann ich ggplot
Arbeit mit diesen Daten habe ich versucht normal Plotten und es funktioniert Prima, aber ich möchte eine bessere Visualisierung verwenden, wenn ich ggplot
, es gibt mir den oben genannten Fehler, Wie kann ich dieses Problem beheben ?
Dies ist eine Implementierung von spectral clustering-Algorithmus. und der code funktioniert gut, und die Daten werden korrekt klassifiziert. Ich brauche nur um zu zeigen das jetzt .
library(ggplot2)
input_data <- as.matrix(read.table("SpectData.txt"))
colnames(input_data) <- c("x1", "x2")
#1- Define Weights matrix
W <- matrix(0,nrow = nrow(input_data),ncol = nrow(input_data))
#2- Define Degree Matrix
D <- matrix(0,nrow = nrow(input_data),ncol = nrow(input_data))
calculateWeight <- function(x1,x2,sigma) {
result <- exp(- (norm(x2-x1,type = "2"))^2/ (2*sigma^2))
result
}
calcWieghtMatrix <- function(sigma) {
for(i in 1: nrow(W)){
for(j in 1: nrow(W)){
if(i == j){
next
}
if( W[i,j] != 0){
next
}
W[i,j] <<- calculateWeight(input_data[i,],input_data[j,],sigma)
W[j,i] <<- W[i,j]
}
}
}
calcDegreeMatrix <- function() {
for( i in 1:nrow(input_data)){
D[i,i] <<- sum(W[i,])
}
}
executeSpectralClustring <- function (sigma,numberOfClusters){
calcWieghtMatrix(sigma)
calcDegreeMatrix()
L <<- D - W
eigenDecompostion <- eigen(L,symmetric = FALSE)
index <- ncol(eigenDecompostion$vectors)-1
eigenVector <- eigenDecompostion$vectors[,index]
cl <- kmeans(eigenVector,numberOfClusters)
ggplot(input_data,col = cl$cluster)
}
executeSpectralClustring(0.01,2)
- konvertieren
matrix
zudata.frame
- beim konvertieren der Eingangs-Daten, um einen Daten-frame, es gibt mir ein leeres Grundstück ! was mache ich falsch ?
- Was genau hast du erwartet, es zu produzieren? du bist nicht wirklich sagen, plot, nichts.
ggplot()
akzeptiert einen Daten-frame (als Sandipan gesagt) und dann haben Sie so zu erzählen, wie die Zuordnung aestetics zu plot-Elemente wie die x-und y-Werte oder Farbe.col = cl$cluster
ist nicht ggplot2-Stil. Sie können die Karte Farbe, um den Namen einer Spalte, ohne die$
obwohl. Aber wichtiger ist, dass Sie nie erklärt jede geometrie (z.B. Punkt -, Balken -, Linien, etc). Es gibt viele gute Dokumentationen gibt, zum Sie entlang zu helfen, obwohl! - Danke, ich fand die Antwort. es mein erstes Erlebnis mit plot und es war lustig. Vielen Dank für Eure Hilfe nochmal
- es gibt durchaus ein paar Dinge, die falsch Aussehen in Ihrem code, aber ich) es ist nicht reproduzierbar (keine Daten); ii) es sollte ein minimal-Beispiel zur Veranschaulichung ein bestimmtes problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach konvertieren Klasse matrix, data frame und stellen Sie sicher, dass Sie speichern die Daten-Rahmen in einem anderen Objekt.
Jetzt mit ggplot auf dieses Objekt
dataFrame
.gibt es nicht, eine matrix-Methode für die ggplot generische Funktion, vermutlich, weil eine matrix kann auf verschiedene Weise interpretiert werden, die für plotting-Zwecke (z.B. sollte man überlegen, die erste Spalte von besonderer Bedeutung bei der Umwandlung in ein long-format?). Sie können ganz einfach definieren Ihre eigene Methode, jedoch (technisch sollte man vermutlich schreiben Sie eine stärken-Methode),
Konvertierte ich input_data in einen Daten-frame und löste es mit
$
notation in ggplot2, benutzen Sie einfach die raw-Spalte-Namen$
im aes ist immer ein Fehler ist.