Julia 如何防止StatsPlots.jl对分类数据重新排序
如果我使用StatsPlots.jl在x轴上使用分类数据绘制箱线图,则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)...],
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:输入使用随机,所以图形每次都会改变
哈哈,是的,这很有效。但它有点不太正常。我想要一个更干净的解决方案。阅读我的代码的人应该很容易理解发生了什么,空格在某一点上会起作用。前导空格和尾随空格似乎不会打印出来,不会从相邻标签中删除任何其他字符。至少在我有限的测试中,它们的行为似乎是透明的/在绘图显示过程中被忽略了。这不是一个解决方案,但如果我们找到一种修复方法,分类数组应该正好解决这个用例。感谢链接。信息量很大。