繁体   English   中英

在ggplot2 facet_grid绘图中设置不同的带宽

[英]Set different bandwidths in ggplot2 facet_grid plotting

假设我有一个名为“data”的数据集,它是通过以下方式生成的:

library(reshape2)  # Reshape data, needed in command "melt"
library(ggplot2)   # apply ggplot

density <-rep (0.05, each=800)

tau <-rep (0.05, each=800)

# define two different models: network and non-network 
model <-rep(1:2, each=400, times=1)


## Create data and factors for the plot
df <- melt(rnorm(800, -3, 0.5))

data <- as.data.frame(cbind(density, tau, model, df$value))

data$density <- factor(data$density,levels=0.05,
                       labels=c("Density=0.05")) 

data$tau <- factor(data$tau,levels=0.05,
                   labels=c("tau=0.05"))

data$model<- factor(data$model,levels=c(1,2),
                    labels=c("Yes",
                             "No")) 

ggplot(data=data, aes(x=V4, shape=model, colour=model, lty=model)) + 

  stat_density(adjust=1, geom="line",position="identity") +

  facet_grid(tau~density, scale="free") +

  geom_vline(xintercept=-3, lty="dashed") +

  ggtitle("Kernel Density") +

  xlab("Data") +

  ylab("Kernel Density") +

  theme(plot.title=element_text(face="bold", size=17),  # change fond size of title
        axis.text.x= element_text(size=14),
        axis.text.y= element_text(size=14),
        legend.title=element_text(size=14),
        legend.text =element_text(size=12),
        strip.text.x=element_text(size=14),             # change fond size of x_axis
        strip.text.y=element_text(size=14))             # change fond size of y_axis

查看数据,变量V4由模型(Yes [1:400]和No [401:800])分成两个子集,并且由于adjust = 1,因此绘制内核密度而不更改原始带宽。

我想要做的是: 对于Yes模型,带宽变为原始带宽的10倍,但对于No型号,带宽保持不变。 我可以做一些让adjust = c(10,1)的东西吗? 我知道如何通过plot()+ lines()实现这一点,但我想在ggplot()中进行此操作以进行进一步分析。

我不推荐这个,因为它会产生一个非常误导的情节,但你可以通过两次调用stat_density(...)来做到这一点。

ggplot(data=data, aes(x=V4, shape=model, colour=model, lty=model)) + 
  stat_density(data=data[data$model=="Yes",], adjust=10, 
               geom="line",position="identity") +
  stat_density(data=data[data$model=="No",], adjust=1, 
               geom="line",position="identity") +
  facet_grid(tau~density, scale="free") +
  geom_vline(xintercept=-3, lty="dashed") +
  ggtitle("Kernel Density") +
  xlab("Data") +
  ylab("Kernel Density") +
  theme(plot.title=element_text(face="bold", size=17),  
        axis.text.x= element_text(size=14),
        axis.text.y= element_text(size=14),
        legend.title=element_text(size=14),
        legend.text =element_text(size=12),
        strip.text.x=element_text(size=14),             
        strip.text.y=element_text(size=14))             

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM