3 Stimmen

Steuerung des Alpha-Werts von Plot-Symbolen in einem Gitter-Dichtegraf.

Ich versuche, die Gitter-Bibliotheksfunktion densityplot zu verwenden, um einige Daten anzuzeigen. Mein Datensatz ist ziemlich unübersichtlich, daher möchte ich den Alphawert der Symbole am unteren Rand reduzieren (damit Sie einen klareren Blick auf die Überlagerungen erhalten). Allerdings scheint es mir nicht zu gelingen, den Alphawert nur dieser Symbole zu ändern, ohne die tatsächliche Dichtekurve ebenfalls undurchsichtig zu machen. Ich verwende die Optionen von par.settings des Graphen und setze unterschiedliche Werte für superpose.line und superpose.symbol (und das funktioniert für das Ändern der Linientypen und Symbole, aber nicht der Alphawerte aus irgendeinem Grund). Ich habe ein kleines Beispiel mit dem Datensatz iris erstellt, um mein Problem/meinen aktuellen Ansatz zu veranschaulichen. Wenn jemand einen Rat hat, würde ich mich wirklich freuen.

library(lattice) 
data(iris) 

graph.settings <- list(superpose.line = list(lty = 1:3, lwd = 2, alpha = 1),
                       superpose.symbol = list(pch = 1:3, alpha = 0.3)) 
densityplot( ~ Sepal.Length, data = iris, groups = Species, 
            auto.key = list(columns = 3), aspect = 1, 
            main = "Dichtediagramm der Sepal-Längen", xlab = "Länge (mm)", 
            par.settings = graph.settings)

6voto

Josh O'Brien Punkte 154170

Hier ist eine schnelle Lösung. Es funktioniert durch Bereitstellung einer 'custom' Panel-Funktion, die panel.densityplot() zweimal aufruft: der erste Aufruf liefert Ihnen Rug-Punkte mit alpha=0.3; der zweite überlagert Dichtekurven mit alpha=1.

library(lattice) 
data(iris) 

graph.settings <- list(superpose.line = list(lty = 1:3, lwd = 2),
                       superpose.symbol = list(pch = 1:3)) 
densityplot( ~ Sepal.Length, data = iris, groups = Species, 
            auto.key = list(columns = 3), aspect = 1, 
            main = "Dichtediagramm der Sepallängen", xlab = "Länge (mm)", 
            par.settings = graph.settings,
            panel = function(x, ...) {
                panel.densityplot(x, ..., alpha = 0.3)
                panel.densityplot(x, ..., plot.points=FALSE, alpha = 1)
            })

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X