R 更改ggplot2中小提琴图的x位置

R 更改ggplot2中小提琴图的x位置,r,ggplot2,violin-plot,R,Ggplot2,Violin Plot,我试着用一个连续变量x来绘制小提琴图。我现在的x值是0,3,5,8。当我把它们画成小提琴时,它们之间的间隔是相等的。有没有办法强迫小提琴的位置基本上在0,3,5,8 我包含了一些示例数据和我基本上要运行的行 condition movedur [1,] 5 0.935 [2,] 0 1.635 [3,] 3 0.905 [4,] 8 0.875 [5,] 3 1.060 [6

我试着用一个连续变量x来绘制小提琴图。我现在的x值是0,3,5,8。当我把它们画成小提琴时,它们之间的间隔是相等的。有没有办法强迫小提琴的位置基本上在0,3,5,8

我包含了一些示例数据和我基本上要运行的行

     condition movedur
 [1,]         5   0.935
 [2,]         0   1.635
 [3,]         3   0.905
 [4,]         8   0.875
 [5,]         3   1.060
 [6,]         8   1.110
 [7,]         3   1.830
 [8,]         5   1.060
 [9,]         5   1.385
[10,]         5   1.560
[11,]         0   1.335
[12,]         3   0.880
[13,]         0   1.030
[14,]         8   1.300
[15,]         3   1.230
[16,]         3   1.210
[17,]         5   1.710
[18,]         3   1.000
[19,]         0   1.365
[20,]         0   1.000

ggplot(a, aes(x = condition, y = movedur, fill = condition)) +
geom_violin()
当我运行完整的代码时,我得到下图。但x轴的间距是相等的,而不是由值隔开


这是因为小提琴图用于x轴上的分类数据,因此它只是将
条件
的不同值视为类别,而不是连续轴上的值。要获得所需结果,您可以使用
complete
插入与其他轴值相对应的缺失值,如下所示。请注意,需要插入
factor
调用以获取
ggplot2
以使用离散
填充
比例。

库(tidyverse)
待定%
完成(条件=0:8)%>%
ggplot()+
geom_小提琴(aes(x=条件,y=移动度,填充=因子(条件)))
#>警告:已删除包含非有限值(stat_ydensity)的5行。


由(v0.2.0)于2018-07-02创建。

如果将
条件变量保留为x轴的整数/数字,但将其用作
填充的因子,则可以获得所需的绘图

请注意,您给出的数据集示例已经将
条件
作为一个整数,但如果它是一个因子,并且您希望将其转换,则可以这样做

a$condition=as.numeric(as.character(a$condition))

我在
scale\u x\u continuous()
中添加了
中断
,以使中断看起来很好

ggplot(a, aes(x = condition, y = movedur, fill = factor(condition))) +
     geom_violin() +
     scale_x_continuous(breaks = c(0, 3, 5, 8) )