1

Gadfly 似乎没有使用分类变量的(级别)顺序:

using CSV
using DataFrames
using Gadfly
using HTTP

url = "https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv"

tips = CSV.File(HTTP.get(url).body) |> DataFrame
categorical!(tips, :day)
ordered!(tips.day, true)
levels!(tips.day, ["Thur", "Fri", "Sat", "Sun"])

Gadfly.plot(tips, x=:day, y=:total_bill, color=:smoker, Geom.boxplot)

在此处输入图像描述

该图不应该继承分类变量中指定的顺序吗?

我找到了一种对分类值进行排序的方法,但由于再次指定了顺序,这感觉有点“错误”。

Gadfly.plot(tips, x=:day, y=:total_bill, color=:smoker, Geom.boxplot,
    Scale.x_discrete(levels=levels(tips.day)))

在此处输入图像描述

任何建议如何解决这个问题?

4

1 回答 1

0

在 Gadfly 中,对于离散x值,值的顺序由它们在数据帧中的顺序决定(因此目前不支持 CategoricalArray 中的级别顺序)。将来可能不支持它,因为 DataFrames 计划删除 CategoricalArrays ( https://github.com/JuliaData/DataFrames.jl/issues/2321 )。

于 2020-11-01T23:24:15.280 回答