Espessura da borda do ponto de controle em ggplot

Ao usar ggplot, posso definir a shape como 21-25 para obter formas que tenham configuração independente para as colors internas ( fill ) e bordas ( col ), assim:

 df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21) 

insira a descrição da imagem aqui

No entanto, não consigo descobrir como controlar a espessura das bordas da forma, definindo-as com absoluta precisão ou como um mapeamento estético. Observo que, se eu definir um valor lwd , ele substitui o size estético:

 ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2) 

insira a descrição da imagem aqui

Como faço para controlar a espessura da borda?

A partir da versão 2.0.0 do ggplot2 , há um argumento para controlar a espessura da borda do ponto. Do arquivo NEWS.md :

geom_point () ganha uma estética de traço que controla a largura da borda das formas 21-25 (# 1133, @SeySayux). o tamanho e o curso são aditivos, portanto, um ponto com tamanho = 5 e curso = 5 terá um diâmetro de 10 mm. (# 1142)

Assim, a solução correta para isso é agora:

 df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y)) + geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2) 

Saída

Parece um pouco hacky, mas você pode adicionar um conjunto ” background ” de pontos com o tamanho definido para o mapeamento estético, além de uma pequena constante para ampliar a borda dos pontos. Jogue com a constante para obter a largura da borda desejada.

Você também terá que desabilitar a legenda do tamanho para pará-lo exibindo a legenda no gráfico …

 ggplot(df, aes(x=x, y=y)) + geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+ scale_size( guide = "none" )+ geom_point(aes(fill=id, size=id), colour="black", shape=21) 

insira a descrição da imagem aqui

Outra solução é criar o gráfico em R e exportá-lo para um arquivo .svg. A largura de linha pode ser alterada usando o software de edição de charts vetoriais (por exemplo, Inkscape). Esse método é particularmente útil quando os pontos de dados se sobrepõem.

Intereting Posts