Como evito a sobreposição de etiquetas em um gráfico R? [fechadas]


44

Estou tentando rotular um gráfico de dispersão bastante simples em R. É isso que eu uso:

plot(SI, TI)
text(SI, TI, Name, pos=4, cex=0.7)

O resultado é medíocre, como você pode ver (clique para ampliar):

insira a descrição da imagem aqui

Tentei compensar isso usando a textxyfunção, mas não é melhor . Aumentar a imagem em si não funciona para os agrupamentos densos.

Existe alguma função ou maneira fácil de compensar isso e deixar R plotar rótulos que não se sobrepõem ?


Aqui está um pequeno subconjunto dos dados que tenho:

Name;SI;TI
01_BAD_talking_head;6.944714;4.421208
01_GOOD_talking_head;5.680141;4.864035
01_GOOD_talking_head_subtitles;7.170114;4.664205

11
Eu postei pergunta semelhante aqui , ter um olhar sobre as respostas lá ..
— Curious

3
Eu encontrei uma solução ! O identify()Vamos você decidir manualmente onde colocar a etiqueta! Não é o ideal, mas pelas soluções propostas isso funciona melhor para mim.
— Curioso

Respostas:



19

O directlabelspacote faz isso. Na sua página da web :

Este pacote é uma tentativa de tornar a rotulagem direta uma realidade na prática estatística diária, disponibilizando um corpo de funções úteis que facilitam a rotulagem direta de plotagens comuns com sistemas de plotagem de alto nível, como retículo e ggplot2.

Porém, nem sempre é possível para gráficos densos.

Aqui está um pequeno exemplo:

set.seed(123)
a <- c(rnorm(10,-3,2),rnorm(10,3,2))
b <- c(rnorm(10,-3,2),rnorm(10,3,2))
dfr <- data.frame(a,b)
dfr$t <- c(paste("A",1:10,sep=""),paste("B",1:10,sep=""))
direct.label(xyplot(b~a,dfr,groups=t, col="black"))

Consegui me livrar da coloração pontual col="black", mas não das etiquetas.


11
Estou tendo problemas para fazê-lo funcionar. Você poderia fornecer um exemplo simples de trabalho?
— slhck 26/09

11
No seu caso, algo como direct.label(xyplot(SI~TI,data=yourDataFrame,group=Name))deve obter um resultado semelhante.
— Laurent

Perfeito. Aqui está o que eu acabei usando seu último exemplo simples. Os rótulos e pontos de cores são realmente muito agradáveis, pois você sabe onde os rótulos pertencem.
— slhck 26/09/11

11
Eu tive que usar library(lattice)para começar xyplota trabalhar.
— 22713 David J. Harris

14

Eu sugiro que você dê uma olhada no wordcloudpacote. Sei que este pacote não se concentra exatamente nos pontos, mas nos próprios rótulos, e também o estilo parece ser bastante fixo. Mas, ainda assim, os resultados obtidos com o uso foram impressionantes. Observe também que a versão do pacote em questão foi lançada no momento em que você fez a pergunta, por isso ainda é muito nova.

http://blog.fellstat.com/?cat=11

saída textplot ()


9

Encontrei um problema semelhante com vários dos gráficos com os quais tenho trabalhado e escrevi um pacote básico que usa simulação de campo de força para ajustar a localização dos objetos. A vantagem sobre algumas das soluções citadas acima é o ajuste dinâmico para a proximidade relativa de objetos em 2D. Embora muitas melhorias sejam possíveis, incluindo heurísticas e integração com o ggplot, etc., parece que a tarefa foi concluída. A seguir, ilustra a funcionalidade:

install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()

Por enquanto, não há heurísticas para uma variedade de áreas e distribuições de pontos, pois a solução atendeu às minhas necessidades e eu queria obter algo útil para as pessoas rapidamente, mas as adicionarei a médio prazo. No momento, recomendo dimensionar os gráficos para 100x100 e voltar e ajustar levemente os parâmetros de atração e repulsão padrão, conforme necessário.


8

Caso você simplesmente não consiga que os rótulos funcionem corretamente como produzidos pelo R, lembre-se de que você sempre pode salvar os gráficos em um formato vetorial (como .pdf) e puxá-los para um programa de edição como o InkScape ou o Adobe Illustrator.


8

Algumas ferramentas adicionais para analisar no R:

Isso não fará tudo por você, mas um deles pode fazer parte de uma solução.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.