R - изменить размер меток оси для corpplot
Я использую следующее с corrplo
т:
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))
Это создано с помощью файла CSV, доступного здесь.
График в порядке, и я могу настроить ярлыки cl все, что я хочу. Я попытался настроить метки на осях X и Y без каких-либо последствий. Я смотрел на изменение мар - но я не нашел способ. Мне не удалось использовать cex.label для изменения размера.
Вопрос - как можно сделать текст, появляющийся для corrplot (не cl, и не в сетке) больше?
Две оси - это следующие фреймы данных:
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)
Выход из
str(lpp_axis1)
является
> 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 ...
Выход из
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.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
>
Ответственный за corrplot написал ответ с альтернативным corrplot.r, доступным здесь
Используя этот corpplot и приведенный ниже пример кода, размер текста приемлем. Однако попытки увеличить его также дают те же эффекты.
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))
Используя более раннюю версию имеющихся здесь корреляционных кругов, можно настроить текст по своему желанию. (Хотя в графике отсутствуют некоторые функции более позднего, более усовершенствованного пакета corrplot.) Cex можно использовать для cex. Я могу попытаться настроить два, чтобы придумать счастливую среду, как позволяет время.
Используя более старый скрипт корреляционных окружностей, следующий код создает достаточно большие метки осей X и Y:
circle.corr(cor(lpp_axis1, lpp_axis2), bg = "gray50", col = colorRampPalette(c("navyblue","white", "red"))(100), cex=1.5)
3 ответа
Update2
На самом деле настоящий воспроизводимый пример теперь благодаря предоставленному коду и данным:
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))
dev.new()
позволяет одновременно сравнивать оба изображения на экране, не разбивая область построения на две панели.
tl.offset
кажется, вызывает больше проблем, чем оно того стоит, поэтому я не учел это. Я включаю две цифры ниже:
С tl.cex = 1
С tl.cex = 2
Как видите, я не могу воспроизвести проблему, которую вы видите; tl.cex
меняется только размер размера меток оси. Обратите внимание, что это без использования tl.offset
но остальная часть кода печати такая же, как у вас.
Это то, что я получаю от 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
- Файл: /home/gavin/R/libs/corrplot/Meta/package.rds
Сравните его с тем, что есть в вашей системе, и попробуйте приведенный выше пример, чтобы мы выполняли точно такой же код для сравнения.
Исходный пример Вот воспроизводимый пример:
require(corrplot)
data(mtcars)
corr <- cor(mtcars)
corrplot(corr, method = "number", tl.cex = 2)
Обновить
Хорошо, теперь я вижу проблему. С tl.offset
Вы отодвигаете метки от графика корреляции дальше в поля. Это кажется либо ошибкой в погоне за corrplot()
как будто ты не настроил tl.offset
он масштабирует график корреляции для размещения меток. Единственное решение, которое я вижу, это не устанавливать 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)
Вы можете улучшить положение вещей, изменив относительные размеры устройства печати - если на экране, увеличьте ширину или высоту (или оба) окна устройства печати, пока все метки не будут видны. Если это другое устройство (pdf()
или же png()
скажем), то вам нужно будет изменить размеры устройства при его создании.
Оригинал Который [Воспроизводимый пример] дает:
Вы не ясно, в чем проблема с метками осей X и Y, но corrplot()
изменяет поля графика для размещения меток. Вы уже указали относительный размер этих осей X и Y, установив аргумент tl.cex = 2
, Если вы хотите, чтобы метки были больше, увеличьте это значение:
corrplot(corr, method = "number", tl.cex = 4)
и если вы хотите пометки поменьше, установите tl.cex
на меньшее значение:
corrplot(corr, method = "number", tl.cex = 0.8)
Учитывая, что это единственные метки x и y на графике, это помогает? Если нет, какие ярлыки нужно изменить?
Вы можете попробовать изменить размер шрифта текста с помощью пар. Я думаю, что размер по умолчанию 12.
Добавление строки как par( ps=14)
до corrplot
должен сделать текст больше.
Учитывая примеры, которые вы добавили, вам, возможно, придется увеличить размеры графика и установить внешние поля, чтобы соответствовать длине ваших меток.
Текущий размер графика доступен с помощью par()$pin
и внешние поля с par()$omi
,
Вы можете изменить размер графика и внешние поля, адаптировав следующий пример:
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)