14 Stimmen

R - Größe der Achsenbeschriftungen für Corrplot ändern

Ich verwende Folgendes mit corrplo t:

require("corrplot") ## needs the corrplot package
corrplot(cor(lpp_axis1, lpp_axis2), method=c("number"), bg = "grey10",
         addgrid.col = "gray50", tl.offset = 2, tl.cex=2,
         tl.col = "black", 
         col = colorRampPalette(c("yellow","green","navyblue"))(100))

Diese wird mit einer verfügbaren csv-Datei erstellt aquí .

Das Diagramm ist in Ordnung, und ich kann die Beschriftungen so anpassen, wie ich will. Ich habe versucht, die Beschriftungen auf der X- und Y-Achse anzupassen, aber ohne Erfolg. Ich habe mir angesehen, wie ich mar ändern kann - aber ich habe keine Möglichkeit dazu gefunden. Der Versuch, die Größe mit cex.label zu ändern, war erfolglos.

Die Frage - wie kann ich den Text, der für Corrplot erscheint (nicht die Cl, und nicht im Raster) größer machen?

Die beiden Achsen sind die folgenden Datenrahmen:

lpp_axis1 <- data.frame("Compile Source Code" = Q3A.1, "View Source Code" = Q3A.2, "Change Source Code" = Q3A.3, "Write Documentation" = Q3A.8, "File Bug Reports"= Q3B.3, "Ask Questions" = Q3B.5, "Provide Answers" = Q3B.6, "Overall Participation" = Q3a3bConsolidated)

lpp_axis2 <- data.frame("Identification" = Q1,"Overall Learning" = Q6Consolidated,  "Learning Programming" = Q6.1,  "Learning about Computers" = Q6.2, "Learning Teamwork" =  Q6.3)

Die Ausgabe von

str(lpp_axis1)

es

> str(lpp_axis1)
'data.frame':   4603 obs. of  8 variables:
 $ Compile.Source.Code  : int  4 2 3 2 2 2 3 2 2 0 ...
 $ View.Source.Code     : int  4 2 1 1 2 2 3 1 1 0 ...
 $ Change.Source.Code   : int  4 1 0 1 2 1 2 1 1 0 ...
 $ Write.Documentation  : int  4 1 2 2 3 0 3 0 1 0 ...
 $ File.Bug.Reports     : int  4 4 1 2 2 0 2 0 0 0 ...
 $ Ask.Questions        : int  4 4 2 4 2 1 2 1 3 0 ...
 $ Provide.Answers      : int  2 4 1 4 4 0 3 1 3 0 ...
 $ Overall.Participation: int  49 26 14 32 31 8 27 10 15 0 ...

Die Ausgabe von

packageDescription("corrplot")

zeigt an:

Package: corrplot
Type: Package
Title: visualization of a correlation matrix
Version: 0.30
Date: 2010-05-30
Author: Taiyun Wei
Suggests: seriation, cairoDevice, Cairo,
Maintainer: Taiyun Wei <weitaiyun@gmail.com>
Description: The corrplot package is a graphical display of a
        correlation matrix, confidence interval. It also contains some
        algorithms to do matrix reordering.
License: GPL-2 | GPL-3
LazyLoad: yes
URL: http://corrplot.r-forge.r-project.org
Repository: CRAN
Repository/R-Forge/Project: corrplot
Repository/R-Forge/Revision: 45
Date/Publication: 2010-05-31 07:44:14
Packaged: 2010-05-30 20:39:16 UTC; rforge
Built: R 2.11.1; ; 2011-03-19 00:22:49 UTC; unix

-- File: /home/user/R/x86_64-pc-linux-gnu-library/2.11/corrplot/Meta/package.rds 
> 

Der corrplot-Maintainer schrieb zurück und stellte eine alternative corrplot.r zur Verfügung aquí

Bei Verwendung dieses Korrplots und des nachstehenden Beispielcodes ist die Textgröße akzeptabel. Der Versuch, sie zu erhöhen, führt jedoch zu denselben Auswirkungen.

source("http://misterdavis.org/R_info/corrplot.r")
corrplot(cor(lpp_axis1, lpp_axis2), addn=T,
         addgrid.col = "gray50", tl.cex=2, assign.col="min2max",
         tl.col = "black", cl.ratio=0.4, addcolor="no",
         col = colorRampPalette(c("yellow","green","blue"))(100))

Verwendung einer früheren Version der verfügbaren Korrelationskreise aquí ist es möglich, den Text nach eigenem Gutdünken anzupassen. (Allerdings fehlt dem Graphen etwas von der Funktionalität des späteren, verfeinerten corrplot-Pakets.) cex kann für cex verwendet werden. Wenn es die Zeit erlaubt, werde ich versuchen, die beiden zu optimieren, um einen guten Mittelweg zu finden.

Bei Verwendung des älteren Skripts für Korrelationskreise erzeugt der folgende Code ausreichend große X- und Y-Achsenbeschriftungen:

circle.corr(cor(lpp_axis1, lpp_axis2), bg = "gray50",   col = colorRampPalette(c("navyblue","white", "red"))(100), cex=1.5)

19voto

Gavin Simpson Punkte 163780

Aktualisierung2

Dank des zur Verfügung gestellten Codes und der Daten gibt es jetzt ein echtes reproduzierbares Beispiel:

d1 <- read.csv(url("http://misterdavis.org/r_wiki/r_results_1231_2010"))
lpp_axis1 <- with(d1, data.frame("Compile Source Code" = Q3A.1,
                                 "View Source Code" = Q3A.2,
                                 "Change Source Code" = Q3A.3, 
                                 "Write Documentation" = Q3A.8, 
                                 "File Bug Reports"= Q3B.3,
                                 "Ask Questions" = Q3B.5,
                                 "Provide Answers" = Q3B.6,
                                 "Overall Participation" = Q3a3bConsolidated))

lpp_axis2 <- with(d1, data.frame("Identification" = Q1,
                                 "Overall Learning" = Q6Consolidated,  
                                 "Learning Programming" = Q6.1,
                                 "Learning about Computers" = Q6.2, 
                                 "Learning Teamwork" =  Q6.3))

corrplot(cor(lpp_axis1, lpp_axis2), method=c("number"), bg = "grey10",
         addgrid.col = "gray50", tl.cex=1,
         tl.col = "black", 
         col = colorRampPalette(c("yellow","green","navyblue"))(100))
dev.new()
corrplot(cor(lpp_axis1, lpp_axis2), method=c("number"), bg = "grey10",
         addgrid.col = "gray50", tl.cex=2,
         tl.col = "black", 
         col = colorRampPalette(c("yellow","green","navyblue"))(100))

En dev.new() ermöglicht es Ihnen, beide gleichzeitig auf dem Bildschirm zu vergleichen, ohne den Darstellungsbereich in zwei Felder aufzuteilen.

En tl.offset scheint mehr Probleme zu verursachen, als es wert ist, deshalb habe ich es weggelassen. Ich füge die beiden Zahlen unten ein:

Mit tl.cex = 1

corrplot with tl.cex = 1

Mit tl.cex = 2

corrplot with tl.cex = 2

Wie Sie sehen können, kann ich das Problem, das Sie sehen, nicht reproduzieren; tl.cex ändert nur die Größe der Achsenbeschriftungen. Beachten Sie, dass dies ohne die Verwendung von tl.offset aber der Rest des Plotting-Codes ist derselbe wie bei Ihnen.

Das bekomme ich von packageDescription() :

R> packageDescription("corrplot")
Package: corrplot
Type: Package
Title: visualization of a correlation matrix
Version: 0.30
Date: 2010-05-30
Author: Taiyun Wei
Suggests: seriation, cairoDevice, Cairo,
Maintainer: Taiyun Wei <weitaiyun@gmail.com>
Description: The corrplot package is a graphical display of a
        correlation matrix, confidence interval. It also contains some
        algorithms to do matrix reordering.
License: GPL-2 | GPL-3
LazyLoad: yes
URL: http://corrplot.r-forge.r-project.org
Repository: CRAN
Repository/R-Forge/Project: corrplot
Repository/R-Forge/Revision: 45
Date/Publication: 2010-05-31 07:44:14
Packaged: 2010-05-30 20:39:16 UTC; rforge
Built: R 2.13.0; ; 2011-04-01 12:33:21 UTC; unix

-- Datei: /home/gavin/R/libs/corrplot/Meta/package.rds

Vergleichen Sie ihn mit dem auf Ihrem System und probieren Sie das obige Beispiel aus, damit wir zum Vergleich genau denselben Code ausführen.


Original Beispiel Hier ist ein reproduzierbares Beispiel:

require(corrplot)
data(mtcars)
corr <- cor(mtcars)
corrplot(corr, method = "number", tl.cex = 2)

Update

Okay, jetzt verstehe ich das Problem. Mit tl.offset schieben Sie die Beschriftungen von der Korrelationsgrafik weg und weiter in die Ränder hinaus. Dies scheint entweder ein Fehler auf Ungenauigkeit in corrplot() als ob Sie nicht die tl.offset skaliert es die Korrelationsgrafik, um die Beschriftungen unterzubringen. Die einzige Lösung, die ich sehe, ist, die tl.offset oder auf einen kleineren Wert setzen. Hier ein extremes Beispiel:

layout(matrix(1:2, ncol = 2))
corrplot(corr, method = "number", tl.cex = 2, tl.offset = 3)
corrplot(corr, method = "number", tl.cex = 2)
layout(1)

corrplot 4

Sie kann Verbessern Sie die Situation, indem Sie die relativen Abmessungen des Plotgeräts ändern - wenn es sich um ein Bildschirmgerät handelt, vergrößern Sie die Breite oder die Höhe (oder beides) des Fensters des Plotgeräts, bis alle Beschriftungen sichtbar sind. Wenn es sich um ein anderes Gerät handelt ( pdf() o png() ), dann müssen Sie die Abmessungen des Geräts bei der Erstellung ändern.


Original Die [Das reproduzierbare Beispiel] gibt:

mtcars correlation plot

Es ist nicht klar, was das Problem mit den Beschriftungen der x- und y-Achse ist, aber corrplot() ändert die Plotränder, um die Beschriftungen unterzubringen. Die relative Größe der Beschriftungen der x- und y-Achse haben Sie bereits mit dem Argument tl.cex = 2 . Wenn Sie die Beschriftungen größer haben möchten, erhöhen Sie diesen Wert:

corrplot(corr, method = "number", tl.cex = 4)

mtcars correlation plot 2

und wenn Sie kleinere Etiketten wünschen, setzen Sie tl.cex auf einen kleineren Wert:

corrplot(corr, method = "number", tl.cex = 0.8)

mtcars correlation plot 3

Da dies die einzigen x y y-Beschriftungen auf der Fläche, hilft das? Wenn nicht, die müssen die Etiketten geändert werden?

4voto

David L. Punkte 2085

Sie könnten versuchen, die Punktgröße von Text mit par zu ändern. Ich glaube, die Standardgröße ist 12.
Hinzufügen einer Zeile wie par( ps=14) vor corrplot sollte den Text größer machen.

3voto

David L. Punkte 2085

Bei den von Ihnen hinzugefügten Beispielen müssen Sie möglicherweise die Dimensionen des Diagramms vergrößern und die äußeren Ränder so einstellen, dass sie die Länge Ihrer Beschriftungen berücksichtigen.

Auf die aktuelle Plotdimension kann man mit par()$pin und die äußeren Ränder mit par()$omi .

Sie können die Plotdimensionen und die äußeren Ränder ändern, indem Sie das folgende Beispiel abwandeln:

require("corrplot")         ## needs the corrplot package  
data(mtcars)  
  corr <- cor(mtcars)    
par(pin=c(7,7))              ##  (width, height) in inches    
par(omi=c(0,1,1,0.5))        ## (bottom, left, top, right)  in inches  
corrplot(corr, method="number", tl.cex = 2)

enter image description here


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