CA построение текстовых атрибутов - PullRequest
2 голосов
/ 16 апреля 2010

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

Следующий код создаст очень симпатичную диаграмму, хотя, если бы было больше атрибутов (очень тяжелые, сверхтяжелые, нечто большее, чем сверхтяжелые) или больше классов рабочих (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

Ответы [ 2 ]

6 голосов
/ 16 апреля 2010

Я бы попробовал некоторые другие функции анализа соответствия, доступные в 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

Конечно, вы можете получить координаты из набора результатов ca и сгенерировать этот график, используя 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 голосов
/ 21 января 2014

Второй блок кода Джорджа Донтаса - действительно хороший пример. Решил большую проблему для меня. Но мне понадобилось вечно, чтобы понять, что имена CA-объектов на самом деле:

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

и

[YOUR_CA-CLASS-TABLE]$rowcoord[,1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...