julia - Plots.jl 和多面箱线图
问题描述
在 Julia 中,我设法用以下最少的工作代码获得了箱线图:
using Plots
using DataFrames
function boxplot_smaa_similarity(arr_nb_alternative::Vector{Int},
arr_nb_montecarlo::Vector{Int},
nb_criteria::Int, nb_simulations::Int)
# Create a fill dataframe
df = DataFrame(NbAlternative = Int[], NbMonteCarlo = Int[], Similarity = Float64[])
for na in arr_nb_alternative
@show na
for mt in arr_nb_montecarlo
println()
println("...$mt")
append!(df, (NbAlternative=ones(Int, nb_simulations)*na,
NbMonteCarlo=ones(Int, nb_simulations)*mt,
Similarity=rand(Float64, nb_simulations)))
end
end
# Boxplot dataframe data
p = Plots.boxplot(df[:NbMonteCarlo],
df[:Similarity],
group = df[:NbAlternative],
ylims = (0.0, 1.1),
xlabel ="Nb Simulations Monte Carlo",
ylabel = "Similarity",
dpi = 500)
# Save figure to path, do not hesitate to change path if necessary
Plots.savefig("../output/plot_compare_SMAA-TRI-AD_crit$(nb_criteria)"*
"_nb_alternative_$(arr_nb_alternative[1])-$(arr_nb_alternative[end])"*
"_nb_MC$(arr_nb_montecarlo[1])-$(arr_nb_montecarlo[end]).png")
return p
end
boxplot_smaa_similarity([50,100,150], [2,4,6,8,10], 5, 10)
然而,结果对我来说并不好,因为三个箱线图是重叠的。是否有解决方案,Plots.jl
或者我应该转移到 PyPlot 或另一个 Julia 库吗?
解决方案
Felipe 的评论是正确的 - 您应该使用 StatsPlots.jl,它包含 Plots.jl 的所有统计配方。有一个groupedboxplot
食谱似乎不在自述文件中
a = rand(1:5, 100)
b = rand(1:5, 100)
c = randn(100)
using StatsPlots
groupedboxplot(a, c, group = b, bar_width = 0.8)
推荐阅读
- dsl - 我可以从空手道 html 报告中删除 docString 吗?
- xcode - 无法重置 xcode 主题/配色方案
- reactjs - 将jsx变量反应到元素内联样式不起作用
- wpf - 如何在 wpf 中使用 MVVM 将 DataGrid 绑定到数据库中的数据表?
- android - Android - 在 AlertDialog TextView 内自动滚动
- python - PyQT5为什么get请求响应总是空的
- php - 获取自定义 URL PHP
- unix - 如何开始一个简单的 crontab 工作?
- c++ - Malloc 内存检查是否连续
- c# - 默认情况下,当检查属性是错误时,默认情况下会检查单选按钮吗?