2015-03-11 2 views
1

У меня есть очищенный набор данных (DropBox: [[[удалено - комментарий, если вам нужна обновленная копия для рабочего примера]]]) расходов в период с 2001 по 2014 год. У меня есть три сюжета - ящик и два рассеивателя - что я am grid.arrange В колонку для сравнения. По этой причине я хотел бы, чтобы годы были выровнены сверху вниз, и для каждого года был один цвет, общий между графиками - опять же, для сравнения.Настройка общего цвета года между несколькими ggplots?

Вот мой продукт, до сих пор (рабочий все в на этом конце, только неуверенные, как выравнивать отображения)

require(ggplot2) 
require(gridExtra) 
require(ggthemes) 
require(lubridate) 

options(scipen=999) 

date <- exp.s$Date 
amount <- exp.s$Amount 
N <- exp.s$total 
xy <- data.frame(date, amount, N) 

#boxplot, color by year of payment 
b1<-ggplot(xy, aes(x = as.factor(year(date)), amount)) + 
geom_boxplot(aes(fill = as.factor(exp.s$start_year))) + 
scale_color_gdocs() + 
theme_gdocs() 

#jitter plot, color by year of payment 
b2<-ggplot(xy, aes(x = as.factor(year(date)), amount)) + 
geom_jitter(alpha=I(.8), aes(color=as.factor(year(date)), size = exp.s$tot)) + 
scale_color_gdocs() + theme_gdocs() 

#jitter, color by contract start year 
b3<-ggplot(xy, aes(x = as.factor(year(date)), amount)) + 
geom_jitter(alpha=I(.9), aes(color=as.factor(exp.s$start_year), size = exp.s$tot)) + 
scale_color_gdocs() + theme_gdocs() 


grid.arrange(b1, b2, b3, ncol=1) 

enter image description here

ответ

1

Попробуйте ниже:

require(ggplot2) 
require(gridExtra) 
require(ggthemes) 
require(lubridate) 

options(scipen=999) 

#read data 
exp.s <- read.csv("2001_2014_Expenditures_Cleaned_Hashed.csv") 

#make same levels for 2 variables 
mylevels <- as.character(sort(unique(c(year(exp.s$Date),exp.s$start_year)))) 

#data prep 
xy <- data.frame(
    mydate = exp.s$Date, 
    mydateYYYY = factor(year(exp.s$Date),levels = mylevels), 
    start_year = factor(exp.s$start_year,levels = mylevels), 
    amount = exp.s$Amount, 
    N = exp.s$tot) 


#boxplot, color by year of payment 
b1<-ggplot(xy, aes(mydateYYYY, amount, 
        fill = start_year)) + 
    geom_boxplot() + 
    scale_fill_identity("legend") + 
    theme_classic() + 
    theme(axis.text.x=element_blank(), 
     axis.title.x=element_blank()) 


#jitter plot, color by year of payment 
b2<-ggplot(xy, aes(mydateYYYY, amount, 
        alpha=0.8,color=mydateYYYY, size = N)) + 
    geom_jitter() + 
    scale_color_identity() + 
    theme_classic() + 
    theme(legend.position="none") + 
    theme(axis.text.x=element_blank(), 
     axis.title.x=element_blank()) 


#jitter, color by contract start year 
b3<-ggplot(xy, aes(mydateYYYY, amount, 
        alpha=0.9, color=start_year, size = N)) + 
    geom_jitter() + 
    scale_color_identity() + 
    theme_classic() + 
    theme(legend.position="none") 


grid.arrange(b1, b2, b3, ncol=1) 

enter image description here

+0

Отлично, спасибо за это, он отлично работает - и мне нравится цвета, которые вы выбрали, поскольку они действительно появляются при использовании Каира: D Еще раз спасибо! – d8aninja

+0

с точки зрения пространства/дизайна, ваше мнение, что я должен урезать большинство этих выбросов в коробке, чтобы позволить ящикам заполнить больше пространства и сделать визуальные ассоциации между цветами более очевидными? – d8aninja

+0

@ D8Amonk вы могли бы использовать 'scale_y_log10()', поэтому меньшие квадратики были бы более заметными, но тогда это было бы трудно интерпретировать. – zx8754

Смежные вопросы