Estou tentando plotar duas variáveis em que N = 700K. O problema é que há muita sobreposição, de modo que a trama se torna principalmente um sólido bloco de preto. Existe alguma maneira de ter uma "nuvem" em escala de cinza em que a escuridão da trama é uma função do número de pontos em uma região? Em outras palavras, em vez de mostrar pontos individuais, quero que o gráfico seja uma "nuvem", com o número de pontos em uma região, mais escura será a região.
r
scatter-plot
user702432
fonte
fonte
Respostas:
Uma maneira de lidar com isso é com a mistura alfa, que torna cada ponto um pouco transparente. Portanto, as regiões parecem mais escuras e com mais pontos traçados nelas.
Isso é fácil de fazer em
ggplot2
:Outra maneira conveniente de lidar com isso é (e provavelmente mais apropriado para o número de pontos que você possui) é o bin hexagonal:
E também há binning retangular antigo regular (imagem omitida), que é mais parecido com o seu mapa de calor tradicional:
fonte
scale_fill_gradient()
e especifique suas próprias cores baixa e alta, ou usescale_fill_brewer()
e escolha uma das paletas seqüenciais.geom_point()
e plotar cada ponto individual.Você também pode dar uma olhada no
ggsubplot
pacote. Este pacote implementa os recursos apresentados por Hadley Wickham em 2011 ( http://blog.revolutionanalytics.com/2011/10/ggplot2-for-big-data.html ).(A seguir, incluo a camada "points" para fins de ilustração.)
No entanto, esse recurso é ótimo se você tiver uma terceira variável para controlar.
Ou outra abordagem seria usar
smoothScatter()
:fonte
Uma visão geral de várias boas opções em
ggplot2
:Opção A: pontos transparentes
Opção B: adicione contornos de densidade
Opção C: adicione contornos de densidade preenchidos
Opção D: mapa de calor de densidade
Opção E: hexbins
Opção F: tapetes
Combine em uma figura:
fonte
A mistura alfa também é fácil com os gráficos básicos.
Os seis primeiros números após o
#
são a cor em hexadecimal RGB e os dois últimos são a opacidade, novamente em hexadecimal, de modo 33 a 3 / 16º opaco.fonte
Você também pode usar linhas de contorno de densidade (
ggplot2
):Ou combine contornos de densidade com mistura alfa:
fonte
Você pode achar útil o
hexbin
pacote. Na página de ajuda dehexbinplot
:fonte
geom_pointdenisty
doggpointdensity
pacote (desenvolvido recentemente por Lukas Kremer e Simon Anders (2019)) permite visualizar a densidade e os pontos de dados individuais ao mesmo tempo:fonte
Meu método favorito para plotar esse tipo de dados é o descrito nesta pergunta - um gráfico de densidade de dispersão . A idéia é fazer um gráfico de dispersão, mas colorir os pontos de acordo com sua densidade (grosso modo, a quantidade de sobreposição nessa área).
Simultaneamente:
Aqui está o resultado da resposta principal à pergunta vinculada:
fonte
R
.