2010-04-16 2 views
2

Кто-нибудь знает, как контролировать размер шрифта/цвет/вес строк и столбцов при построении графика соответствия с пакетом ca?ca plotting text attributes

Следующий код создаст очень красивый график, хотя, если бы было больше атрибутов (очень тяжелых, супер тяжелых, что-то большее, чем супер тяжелое) или более классов рабочих (peons, underlings и т. Д.), Тогда график будет немного запутаться и трудно сказать, что к чему.

Было бы неплохо, если бы вы могли перечислить все атрибуты в отдельном цвете, чем категории рабочих.

library(ca) 
data("smoke") 

plot(ca(smoke) 
    , map = "symmetric" 
    , what =c("active","active") 
    , mass = c(T,T) 
    , contrib = "absolute" 
    , col = c("red","blue") 
    , pch = c(15,17,15,17) 
    , labels = c(2,2) 
    , arrows = c(T,F) 
) 

Кроме того, кто-нибудь знает, есть ли способ, чтобы воспроизвести что-то вдоль этих линий с ggplot2? Я ничего не нашел на веб-сайте, который казался сопоставимым, но я мало что знаю о пакете.

Спасибо, -Chase

ответ

6

Я хотел бы попробовать некоторые из других функций анализа соответствия имеющихся в R. В некоторых из них коэффициент расширения символов (cex) опция поддерживается, так что вы можете контролировать размер шрифта. , например.

library(FactoMineR) 
res<-CA(smoke, ncp=5, row.sup=NULL, col.sup=NULL, graph = FALSE) 
plot.CA(res, axes=c(1, 2), col.row="red", col.col="blue", label=c("col","col.sup", "row", "row.sup"),cex=.7) 

library(MASS) 
biplot(corresp(smoke, nf = 2),cex=.7,col=c("red","blue")) 

library(anacor) # actually I didn't find a way to control font size here 
res <- anacor(smoke, scaling = c("Benzecri", "Benzecri"),ndim=2) 
plot(res, plot.type = "jointplot", conf = NULL) 

EDIT

Конечно, вы могли бы получить координаты из са результирующих и генерировать этот участок с помощью ggplot2. Здесь я использую объект res из CA.

df <- data.frame(dim1 = c(res$col$coord[,1],res$row$coord[,1]), 
dim2 = c(res$col$coord[,2],res$row$coord[,2]), 
type=c(rep(1,length(res$col$coord[,1])),rep(2,length(res$row$coord[,1])))) 

library(ggplot2) 
qplot(dim1,dim2,data=df,colour=factor(type)) + 
geom_text(aes(label=rownames(df)),size=3) 
+0

Это именно то, что мне нужно, чтобы помочь мне на моем пути. Я прошу прощения за то, что не ответил раньше, я путешествовал. Еще раз спасибо! – Chase

0

Второй кодовый блок George Dontas - действительно хороший пример. Решил большой вопрос для меня. Но он взял меня навсегда, чтобы выяснить, что имена СА-объектов, на самом деле:

[YOUR_CA-CLASS-TABLE]$colcoord[,1] 

и

[YOUR_CA-CLASS-TABLE]$rowcoord[,1] 
+0

Я думаю, что это лучше подходит в качестве комментария к ответу Джорджа Донтаса. –

+0

У вас должно быть 50 репутации для комментариев ... – nevrome

+0

Извините за это ;-) –