以下代码将显示覆盖网格的vioplot
dat <- sample(1:5, 100, replace = TRUE)
vioplot(dat, col = "yellow")
grid (NULL, lty = 6, col = "grey")
如何删除&#34; 1&#34;的x轴标签,其对应的刻度线,并且只显示水平网格线?
添加以下内容不起作用:
title(xlab="")
答案 0 :(得分:2)
您可以删除x轴刻度标签并仅绘制水平网格线,如下所示:
library(vioplot)
set.seed(2)
dat <- sample(1:5, 100, replace = TRUE)
# Draw plot without x-axis tick label
vioplot(dat, col = "yellow", names="")
# Draw only horizontal grid lines
grid(NULL, lty = 6, col = "grey", nx=0)
看起来轴刻度标记是硬编码的。但是,您可以修改vioplot
函数本身以创建删除刻度线的选项。要获取功能代码,请在控制台中键入vioplot
。将代码复制并粘贴到R脚本中,并为该函数指定一个新名称,如my_violin
。在vioplot/my_violin
内的某处,调用axis
函数来绘制x轴。我们只需要添加一种修改此axis
调用的方法,以便我们决定是否绘制刻度线。为此,请将以下参数添加到my_violin
函数声明中:
tick=TRUE
然后在my_violin
函数中找到以下代码行:
axis(1, at = at, label = label)
并将其更改为:
axis(1, at = at, label = label, tick=tick)
现在,使用tick=FALSE
:
my_violin(dat, col = "yellow", names="", tick=FALSE)
grid(NULL, lty = 6, col = "grey", nx=0)
这是ggplot2
对同一情节的处理方法:
library(ggplot2)
ggplot(dat=data.frame(y=dat), aes(x="", y=y)) +
geom_violin(fill="yellow") +
geom_hline(yintercept=1:5, colour="grey40", linetype=4, size=0.3) +
geom_boxplot(width=0.05) +
theme_classic() +
theme(axis.ticks.x=element_blank()) +
labs(x="", y="")