我想用ggplot2绘制一些小提琴图,但我注意到中位数和第一和第三四分位数不会自动显示。我相信这些情节可以提供更多信息。有人知道这样做的方法吗?
答案 0 :(得分:41)
这样做的一种方法是在其顶部放置一个薄盒图。以下是虹膜数据的示例:
require(ggplot2)
ggplot(iris,aes(Species,Sepal.Length))+geom_violin()+geom_boxplot(width=.1)
答案 1 :(得分:23)
我是通过谷歌搜索发现的:
首先,此Stack Overflow post表示您可以添加stat_summary(fun.y="median", geom="point")
来绘制小提琴图上的中位数作为一个点。
关于四分位数,你可能必须为上面的fun.y参数编写自己的函数,如here所示。 E.g:
median.quartile <- function(x){
out <- quantile(x, probs = c(0.25,0.5,0.75))
names(out) <- c("ymin","y","ymax")
return(out)
}
完整代码可能如下所示:
require(ggplot2)
median.quartile <- function(x){
out <- quantile(x, probs = c(0.25,0.5,0.75))
names(out) <- c("ymin","y","ymax")
return(out)
}
ggplot(iris,aes(Species,Sepal.Length))+
geom_violin()+
stat_summary(fun.y=median.quartile,geom='point')
答案 2 :(得分:15)
import os
cwd = os.getcwd()
config = {
'append_dir_to_filename' : ('d5', 'a9'),
'd5': ('nef', 'NED', 'jpg', 'JPG', 'avi', 'AVI'),
'a9': ('mp4', 'MP4', 'jpg', 'JPG', 'avi', 'AVI')
}
cameraDirs = [os.path.join(cwd, x) for x in next(os.walk(cwd))[1] if x[-2:] in config['append_dir_to_filename']]
for cameraDir in cameraDirs:
cameraShortName = cameraDir[-2:]
for rootDir, _, files in os.walk(cameraDir):
prefix = os.path.basename(rootDir)
for file in files:
if (any(x for x in config[cameraShortName] if file.endswith(x))):
os.rename(os.path.join(rootDir, file), os.path.join(rootDir, "{}_{}".format(prefix, file)))
有一个参数geom_violin
,允许您指定要包含的分位数。以下是虹膜上第1,第2和第3四分位数的示例。
draw_quantiles