I am using the following with 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))
This is created with a csv file available here.
The graph is fine and I can adjust the cl labels all I want. I've tried adjusting the labels on x and y axis with no impact. I looked at changing mar - yet I haven't found a way to. I was unsuccessful with trying to use cex.label to change size.
The question - how can I make the text appearing for corrplot (not the cl, and not in the grid) larger?
The two axes are the following data frames:
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)
The output from
str(lpp_axis1)
is
> 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 ...
The output from
packageDescription("corrplot")
indicates:
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
>
The corrplot maintainer wrote back with an alternate corrplot.r available here
Using the this corrplot and the example code below, the text size is acceptable. However, attempts to increase it also produce the same effects.
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))
Using an earlier version of the correlation circles available here, it is possible to adjust the text to one's heart desire. (Though the graph lacks some of the functionality of the later, more refined corrplot package.) cex can be used for cex. I may try to tweak the two to come up with a happy medium as time permits.
Using the older correlation circles script, the following code produces sufficiently large X and Y axis labels:
circle.corr(cor(lpp_axis1, lpp_axis2), bg = "gray50", col = colorRampPalette(c("navyblue","white", "red"))(100), cex=1.5)
You could try changing the point size of text with par. I think the default size is 12.
Adding a line like
par( ps=14)
beforecorrplot
should make the text larger.Given the examples you added, you might have to increase the dimensions of the plot and set the outer margins to accommodate the length of your labels.
The current plot dimension can be accessed with
par()$pin
and the outer margins withpar()$omi
.You can change the plot dimension and the outer margins by adapting the following example:
Update2
Actually a real reproducible example is now, thanks to code and data being provided:
The
dev.new()
allows you to have both on screen at once to compare, without splitting the plotting region into two panels.The
tl.offset
seems to cause more problems than it is worth, so I have left it out. I include the two figures below:With
tl.cex = 1
With
tl.cex = 2
As you can see, I can't reproduce the problem you are seeing;
tl.cex
is only changing the size of the size of the axis labels. Note this is without usingtl.offset
but the rest of the plotting code is the same as yours.This is what I get from
packageDescription()
:-- File: /home/gavin/R/libs/corrplot/Meta/package.rds
Compare it with the one on your system and try the example above so we are running exactly the same code for comparison.
Original Example Here is a reproducible example:
Update
Ok, I see the problem now. With
tl.offset
, you push the labels away from the correlation graphic further out into the margins. This seems either a bug on infelicity incorrplot()
as if you don't settl.offset
it scales the correlation graphic to accommodate the labels. The only solution I can see is to not settl.offset
at all, or set it to a smaller value Here is an extreme example:You can improve things, by altering the relative dimensions of the plot device - if on screen, increase the width or height (or both) of the plot device window until all the labels are visible. If this is another device (
pdf()
orpng()
say), then you'll need to alter the dimensions of the device when you create it.Original Which [The reproducible example] gives:
You aren't clear what the problem with the x and y axis labels, but
corrplot()
alters the plot margins to accommodate the labels. You have already stated the relative size of these x and y axis labels by setting argumenttl.cex = 2
. If you want the labels bigger, increase this value:and if you want smaller labels, set
tl.cex
to a smaller value:Given these are the only x and y labels on the plot, does this help? If not, which labels need altering?