2016-07-12 3 views
3

Я делаю разброс в R с ggplot2. Я сравниваю долю голосов, полученных Хиллари и Берни на начальном и образовательном уровнях. Существует много переплетений и способов во многих точках. Я попытался использовать прозрачность, чтобы я мог видеть перекрытие, но все равно выглядит плохо.График рассеяния в R с большим перекрытием и 3000+ точек

My Graph

Код:

demanalyze <- function(infocode, n = 1){ 
    infoname <- filter(infolookup, column_name == infocode)$description 
    infocolumn <- as.vector(as.matrix(mydata[infocode])) 
    ggplot(mydata) + 
    aes(x = infocolumn) + 
    ggtitle(infoname) + 
    xlab(infoname) + 
    ylab("Fraction of votes each canidate recieved") + 
    xlab(infoname) + 
    geom_point(aes(y = sanders_vote_fraction, colour = "Bernie Sanders")) +#, color = alpha("blue",0.02), size=I(1)) + 
    stat_smooth(aes(y = sanders_vote_fraction), method = "lm", formula = y ~ poly(x, n), size = 1, color = "darkblue", se = F) + 
    geom_point(aes(y = clinton_vote_fraction, colour = "Hillary Clinton")) +#, color = alpha("red",0.02), size=I(1)) + 
    stat_smooth(aes(y = clinton_vote_fraction), method = "lm", formula = y ~ poly(x, n), size = 1, color = "darkred", se = F) + 
    scale_colour_manual("", 
     values = c("Bernie Sanders" = alpha("blue",0.02), "Hillary Clinton" = alpha("red",0.02)) 
    ) + 
    guides(colour = guide_legend(override.aes = list(alpha = 1))) 
} 

Что я могу изменить, чтобы область перекрытий выглядит менее грязной?

+0

Попробуйте [плотность] (http://docs.ggplot2.org/0.9.2.1/stat_density2d.html). Два полупрозрачных должны сделать это. Обычно это помогает обеспечить воспроизводимый пример или данные. –

+0

@SerbanTanasa Как я могу загрузить свой файл csv в переполнение стека? Я согласен с тем, что мне нужен график плотности, но я понятия не имею, как заставить их выглядеть хорошо. Точки в области с низкой плотностью трудно обнаружить. – 2426021684

ответ

3

Стандартный способ построить большое число точек на 2 измерениях является использование 2D-графики плотности:

С воспроизводимым Например:

x1 <- rnorm(1000, mean=10) 
x2 <- rnorm(1000, mean=10) 
y1 <- rnorm(1000, mean= 5) 
y2 <- rnorm(1000, mean = 7) 


mydat <- data.frame(xaxis=c(x1, x2), yaxis=c(y1, y2), lab=rep(c("H","B"),each=1000)) 
head(mydat) 

library(ggplot2) 
##Dots and density plots (kinda messy, but can play with alpha) 
p1 <-ggplot(mydat) + geom_point(aes(x=xaxis, y = yaxis, color=lab),alpha=0.4) + 
stat_density2d(aes(x=xaxis, y = yaxis, color=lab)) 
p1 

dots and radii

## just density 
p2 <-ggplot(mydat) + stat_density2d(aes(x=xaxis, y = yaxis, color=lab)) 
p2 

density plot

Есть много параметры для игры, поэтому посмотрите here для получения полной информации о типе участка в ggplot2.