堆叠扁平小提琴ggplot
Stacked flat violin ggplot
我想绘制一个小提琴 ggplot,其中 x 轴是年份,y 轴是值。每年,我需要三个小提琴情节。当我尝试这样做时,y 轴没有堆叠在一起,所以这三个的密度没有显示清楚。每年,我都希望将它们绘制在同一个 y 轴上,并且填充颜色是透明的,以便可以看到所有三个。数据集很长(很难复制一个较短的数据集)但它是 sum1.14
、sum5.14
和 sum10.14
.
三个数据帧
plot.density.tenor <- function(cent_list_sum1,cent_list_sum5,cent_list_sum10,start_year,end_year){
df1 <- melt(ldply(cent_list_sum1, data.frame))
df5 <- melt(ldply(cent_list_sum5, data.frame))
df10 <- melt(ldply(cent_list_sum10, data.frame))
df <- rbind(df1,df5,df10)
years <- seq(start_year,end_year)
df$year <- rep(rep(as.character(seq(start_year,end_year)),each=nrow(df1)/length(years)),3)
df$tenor <- rep(c("1","5","10"),each=nrow(df1))
df$tenor <- factor(df$tenor, levels=c("1", "5", "10"))
ggplot(df, aes(year, value, color = tenor)) +
geom_flat_violin() +
ggtitle("Centrality Measure Distribution") + ylab("Centrality") + xlab("Year") +
stat_summary(colour="red", size = 0.5)
#theme(legend.position = "none")
}
plot.density.tenor(sum1.14,sum5.14,sum10.14,2010,2021)
我可以用这个假数据复制类似的东西:
set.seed(42)
fake <- data.frame(year = as.character(rep(2010:2021, each = 30)),
tenor = rep(c("1", "5", "10"), times = 120),
value = rnorm(360, mean = 0.5))
library(PupillometryR)
library(ggplot2)
ggplot(fake, aes(year, value, color = tenor)) +
geom_flat_violin() +
stat_summary(colour="red", size = 0.5)
我想我们可以通过下面的代码得到类似于您所描述的内容。首先,我们覆盖默认值以使每个绘图更宽(这可能需要针对不同的数据进行调整),然后告诉“闪避”功能应该在每个连续的“男高音”组的基线之间插入零 space。
ggplot(fake, aes(year, value, fill = tenor)) +
geom_flat_violin(width = 15,
position = position_dodge(width = 0),
alpha = 0.5) +
stat_summary(colour="red", size = 0.5)
我想绘制一个小提琴 ggplot,其中 x 轴是年份,y 轴是值。每年,我需要三个小提琴情节。当我尝试这样做时,y 轴没有堆叠在一起,所以这三个的密度没有显示清楚。每年,我都希望将它们绘制在同一个 y 轴上,并且填充颜色是透明的,以便可以看到所有三个。数据集很长(很难复制一个较短的数据集)但它是 sum1.14
、sum5.14
和 sum10.14
.
plot.density.tenor <- function(cent_list_sum1,cent_list_sum5,cent_list_sum10,start_year,end_year){
df1 <- melt(ldply(cent_list_sum1, data.frame))
df5 <- melt(ldply(cent_list_sum5, data.frame))
df10 <- melt(ldply(cent_list_sum10, data.frame))
df <- rbind(df1,df5,df10)
years <- seq(start_year,end_year)
df$year <- rep(rep(as.character(seq(start_year,end_year)),each=nrow(df1)/length(years)),3)
df$tenor <- rep(c("1","5","10"),each=nrow(df1))
df$tenor <- factor(df$tenor, levels=c("1", "5", "10"))
ggplot(df, aes(year, value, color = tenor)) +
geom_flat_violin() +
ggtitle("Centrality Measure Distribution") + ylab("Centrality") + xlab("Year") +
stat_summary(colour="red", size = 0.5)
#theme(legend.position = "none")
}
plot.density.tenor(sum1.14,sum5.14,sum10.14,2010,2021)
我可以用这个假数据复制类似的东西:
set.seed(42)
fake <- data.frame(year = as.character(rep(2010:2021, each = 30)),
tenor = rep(c("1", "5", "10"), times = 120),
value = rnorm(360, mean = 0.5))
library(PupillometryR)
library(ggplot2)
ggplot(fake, aes(year, value, color = tenor)) +
geom_flat_violin() +
stat_summary(colour="red", size = 0.5)
我想我们可以通过下面的代码得到类似于您所描述的内容。首先,我们覆盖默认值以使每个绘图更宽(这可能需要针对不同的数据进行调整),然后告诉“闪避”功能应该在每个连续的“男高音”组的基线之间插入零 space。
ggplot(fake, aes(year, value, fill = tenor)) +
geom_flat_violin(width = 15,
position = position_dodge(width = 0),
alpha = 0.5) +
stat_summary(colour="red", size = 0.5)