简体   繁体   English

R - 更改corrplot的轴标签大小

[英]R - change size of axis labels for corrplot

I am using the following with corrplo t: 我使用以下与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 . 这是使用此处提供的csv文件创建的。

The graph is fine and I can adjust the cl labels all I want. 图表很好,我可以调整我想要的cl标签。 I've tried adjusting the labels on x and y axis with no impact. 我试过调整x和y轴上的标签没有任何影响。 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. 我尝试使用cex.label来改变大小是不成功的。

The question - how can I make the text appearing for corrplot (not the cl, and not in the grid) larger? 问题 - 如何使文本出现在corrplot(不是cl,而不是在网格中)更大?

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 corrplot维护者用一个备用的corrplot.r回复了这里

Using the this corrplot and the example code below, the text size is acceptable. 使用此corrplot和下面的示例代码,文本大小是可以接受的。 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. (虽然该图缺少后来更精确的corrplot包的一些功能。)cex可用于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: 使用较旧的相关圆圈脚本,以下代码生成足够大的X和Y轴标签:

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

Update2 UPDATE2

Actually a real reproducible example is now, thanks to code and data being provided: 实际上,由于提供了代码和数据,现在是一个真正可重现的例子:

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))

The dev.new() allows you to have both on screen at once to compare, without splitting the plotting region into two panels. dev.new()允许您同时在屏幕上进行比较,而不将绘图区域分成两个面板。

The tl.offset seems to cause more problems than it is worth, so I have left it out. tl.offset似乎造成了比它值得多的问题,所以我把它排除在外。 I include the two figures below: 我包括以下两个数字:

With tl.cex = 1 tl.cex = 1

corllot,tl.cex = 1

With tl.cex = 2 tl.cex = 2

corllot与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. tl.cex仅更改轴标签大小。 Note this is without using tl.offset but the rest of the plotting code is the same as yours. 请注意,这不使用tl.offset但其余的绘图代码与您的相同。

This is what I get from packageDescription() : 这是我从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

-- File: /home/gavin/R/libs/corrplot/Meta/package.rds - 文件:/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: 原始示例以下是可重现的示例:

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

Update 更新

Ok, I see the problem now. 好的,我现在看到了问题。 With tl.offset , you push the labels away from the correlation graphic further out into the margins. 使用tl.offset ,您可以将标签从相关图形中进一步推出到边距中。 This seems either a bug on infelicity in corrplot() as if you don't set tl.offset it scales the correlation graphic to accommodate the labels. 这似乎是corrplot()中的corrplot()错误,就像你没有设置tl.offset它会缩放相关图形以容纳标签。 The only solution I can see is to not set tl.offset at all, or set it to a smaller value Here is an extreme example: 我能看到的唯一解决方案是根本不设置tl.offset ,或者将其设置为较小的值这是一个极端的例子:

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

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() or png() say), then you'll need to alter the dimensions of the device when you create it. 如果这是另一个设备( pdf()png()说),那么您需要在创建设备时更改设备的尺寸。


Original Which [The reproducible example] gives: 原件 [可重现的例子]给出:

mtcars相关图

You aren't clear what the problem with the x and y axis labels, but corrplot() alters the plot margins to accommodate the labels. 您不清楚x和y轴标签的问题,但corrplot()会更改绘图边距以容纳标签。 You have already stated the relative size of these x and y axis labels by setting argument tl.cex = 2 . 您已通过设置参数tl.cex = 2说明这些x和y轴标签的相对大小。 If you want the labels bigger, increase this value: 如果您希望标签更大,请增加此值:

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

mtcars相关图2

and if you want smaller labels, set tl.cex to a smaller value: 如果你想要更小的标签,请将tl.cex设置为更小的值:

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

mtcars相关图3

Given these are the only x and y labels on the plot, does this help? 鉴于这些是图中唯一的x y标签,这有帮助吗? If not, which labels need altering? 如果没有, 哪些标签需要改变?

You could try changing the point size of text with par. 您可以尝试使用par更改文本的磅值。 I think the default size is 12. 我认为默认大小是12。
Adding a line like par( ps=14) before corrplot should make the text larger. corrplot之前添加像par( ps=14) corrplot应该使文本更大。

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 with par()$omi . 可以使用par()$pin访问当前绘图尺寸,使用par()$omi访问外边距。

You can change the plot dimension and the outer margins by adapting the following example: 您可以通过调整以下示例来更改绘图尺寸和外边距:

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)

在此输入图像描述


声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM