所以我有这个代码
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")
并有这个图表:
另外,我想在箱图上添加jitter
。但如果我只是添加
+ geom_jitter(alpha=0.5, aes(price, values, color=group),
position = position_jitter(width = .2))
我在geom_line
行上有抖动,但在箱图上没有。
这可能吗?
P.S。:数据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")
答案 0 :(得分:0)
这是一个如何使用可重复的数据做我认为你想要的事情的例子。
# 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'))
结果: