问题描述
我使用Julia版本1.4.2,并且想要绘制一个小提琴图,在这里我有两个数据集A和B,我希望使用相同的x-ticks进行绘制。我希望数据A是每个x位置的左半部分,B是右半部分。
这是一个测试示例:
using StatsPlots
A=[rand(10),rand(12),rand(44)]
B=A./2
X=[1,2,3]
StatsPlots.violin(A,xticks=X,side=:left)
StatsPlots.violin!(B,side=:right)
运行此命令时,数据A如我所愿被绘制,但数据B被移位。我想在x位置1处有A,在左边有B,以将它们相互比较。但是,我得到了一个图,其中B的数据位于x位置4-6(尽管没有标记的刻度):
解决方法
我正在使用一种可行的解决方案,但这有点难看:
using StatsPlots
A=[rand(10),rand(12),rand(44)]
B=A./2
X=[[1],[2],[3]] #this is changed compared to my initial post
StatsPlots.violin(X[1],A[1],side=:left)
StatsPlots.violin!(X[1],B[1],side=:right)
for i=2:length(X)
println(length(X))
StatsPlots.violin!(X[i],A[i],side=:left)
StatsPlots.violin!(X[i],B[i],side=:right)
end
current()