So I have this code
ggplot(data, aes(x=price, y=values)) +
# add colourful lines
geom_line(aes(group=group, color=group)) +
# add two box plots
geom_boxplot(data=df, aes(x="z_lnprice_new", y=x_lnprice_new)) +
geom_boxplot(data=df, aes(x='a_lnprice_new', y=b_lnprice_old)) +
# delete the legend
theme(legend.position="none")
and have this graph:
Also I want to add the jitter
on the boxplots. But if I just add
+ geom_jitter(alpha=0.5, aes(price, values, color=group),
position = position_jitter(width = .2))
I'm having the jitter on the lines geom_line
, but not on the boxplots.
Is that possible?
P.S.: the whole chunk of code with data Google Drive, .csv, 25 kB
df <- data.frame(b_lnprice_old= sort(nb_firm_two_price[[175]]),
x_lnprice_new = sort(nb_firm_two_price[[176]]))
data <- data.frame(group = factor(1:nrow(df)),
price=c(rep('b_lnprice_old',nrow(df)),
rep('x_lnprice_old',nrow(df))),
values=c(df$b_lnprice_old,df$x_lnprice_new))
ggplot(data, aes(x=price, y=values)) +
geom_line(aes(group=group, color=group)) +
geom_boxplot(data=df, aes(x="z_lnprice_new", y=x_lnprice_new)) +
geom_boxplot(data=df, aes(x='a_lnprice_new', y=b_lnprice_old)) +
theme(legend.position="none")
Here's an example of how to do what I think you are going for, using reproducible data.
# reproducible random data
set.seed(123)
obs <- 100
dat <- data.frame(group=1:obs, old_price=rnorm(obs, mean=10))
dat$new_price <- dat$old_price + rnorm(obs, mean=1)
# libraries
library(reshape2)
library(ggplot2)
# convert from wide to long
plot_dat <- melt(dat, id.var='group')
# plot
ggplot(plot_dat) +
# simple lines
geom_line(aes(x=variable, y=value, group=group, color=group)) +
# box plots and jitter points, with modified x value
geom_boxplot(aes(x=paste0('hist_', variable), y=value)) +
geom_jitter(aes(x=paste0('hist_', variable), y=value, color=group)) +
# specify x value order
scale_x_discrete(limits=c('hist_old_price', 'old_price', 'new_price',
'hist_new_price'))
Result: