我想繪制一個小提琴 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)

uj5u.com熱心網友回復:
我可以用這個假資料復制類似的東西:
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)

我認為我們可以通過下面的代碼獲得您所描述的內容。首先我們覆寫默認值以使每個圖更寬(這可能需要針對不同的資料進行調整),然后告訴“躲避”功能應該在每個連續的“男高音”組的基線之間插入零空間。
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)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/478381.html
上一篇:R中帶有中斷的多行x軸標簽
