Julia 如何防止StatsPlots.jl对分类数据重新排序

Julia 如何防止StatsPlots.jl对分类数据重新排序,julia,plots.jl,Julia,Plots.jl,如果我使用StatsPlots.jl在x轴上使用分类数据绘制箱线图,则StatsPlots.jl按字母顺序排列轴。我怎样才能阻止这种事情发生 using DataFrames using StatsPlots plotly() df = DataFrame(grade=[rand(4:0.5:6, 40)..., rand(5:0.5:8, 20)..., rand(8:0.5:10, 10)...],

如果我使用StatsPlots.jl在x轴上使用分类数据绘制箱线图,则StatsPlots.jl按字母顺序排列轴。我怎样才能阻止这种事情发生

using DataFrames
using StatsPlots

plotly()

df = DataFrame(grade=[rand(4:0.5:6, 40)...,
                      rand(5:0.5:8, 20)...,
                      rand(8:0.5:10, 10)...], 
               experience=[fill("beginner", 40)..., 
                           fill("advanced", 20)...,
                           fill("expert", 10)...])

boxplot(df.experience, df.grade, label=nothing)

可以使用左右空格填充技巧:

xorder = ["beginner" "expert" "advanced"]
Nx = length(xorder)
str = fill("",length(df.experience))
for (i,xi) in enumerate(xorder)
    j = findall(x->x==xi, df.experience)
    si = " "^(Nx-i)
    @. str[j] = si * string(df.experience[j]) * si
end

# solution by left-right space-padding strings
@df df boxplot(str, :grade, fillalpha=0.75, linewidth=1, label=nothing)
PS:输入使用随机,所以图形每次都会改变


哈哈,是的,这很有效。但它有点不太正常。我想要一个更干净的解决方案。阅读我的代码的人应该很容易理解发生了什么,空格在某一点上会起作用。前导空格和尾随空格似乎不会打印出来,不会从相邻标签中删除任何其他字符。至少在我有限的测试中,它们的行为似乎是透明的/在绘图显示过程中被忽略了。这不是一个解决方案,但如果我们找到一种修复方法,分类数组应该正好解决这个用例。感谢链接。信息量很大。