2

我是Julia新手,我正在探索可视化分布的方式。最终,我可能会求助于更强大的matplotlib代码库,但我真的很喜欢IJuliaNotebook中提供的动态可视化元素。

我的问题涉及用Gadfly绘制比例值的直方图。我能够使用 Gadfly 自动选择一个合理的支持来绘制内核密度(也就是与基础数据一致的支持:[-0.1,0.5])。

#Visualization
using Gadfly

#(Python) pandas analogue
require("DataFrames")

#Practice sets
require("RDatasets")

#Extract the Hedonic set
hedonic=RDatasets.dataset("plm","Hedonic")

#Define density plot layer for black population proportion
dens_layer=layer(hedonic,x=:Blacks,Geom.density,Theme(default_color=color("#de2d26")))

#Plot kernel density
dens_plot=plot(dens_layer, Guide.title("Distribution of Black Proportion"))

在此处输入图像描述

但是,直方图适合太大的支持 ([0,4])。所有相关数据都由跨越整个 [0,1] 区间的单个条形捕获。

#Define histogram layer
hist_layer=layer(hedonic,x=:Blacks,Geom.histogram,Theme(default_color=color("#de2d26"))) 

#Plot histogram
hist_plot_default=plot(hist_layer, Guide.title("Distribution of Black Proportion"))

在此处输入图像描述

当我增加 时bincount,支持就会增加。例如,使用bincount=100时,支持度增长到 [0,150],所有数据仍由单个条形表示。

#Plot histogram again, this time with 100 bins
hist_plot_bin100=plot(hedonic,x=:Blacks,Geom.histogram(bincount=100),Theme(default_color=color("#de2d26"))) 

在此处输入图像描述

所以,如果有人能告诉我我在搞砸什么,那肯定会很感激。或者,也许限制范围会强制直方图条的适当分配......?为此,我如何限制范围以便我可以查看 [0,1] 区间的分布?

4

2 回答 2

1

此问题已修复,请查看以下示例结果,

julia> using Gadfly, DataFrames, RDatasets
julia> hedonic=RDatasets.dataset("plm","Hedonic")
julia> hist_layer=layer(hedonic,x=:Blacks,Geom.histogram,Theme(default_color=color("#de2d26")))
julia> hist_plot_default=plot(hist_layer, Guide.title("Distribution of Black Proportion"))

在此处输入图像描述

julia> hist_plot_bin100=plot(hedonic,x=:Blacks,Geom.histogram(bincount=100),Theme(default_color=color("#de2d26")))

在此处输入图像描述

于 2016-08-27T19:15:58.127 回答
0

首先,我可以重新创建它。我认为它在代码中的这个分支上

https://github.com/dcjones/Gadfly.jl/blob/040606f82c4e014611464068b0d5cda111b6662a/src/statistics.jl#L136-L143

    isdiscrete = false
    value_set = collect(Set(values[Bool[Gadfly.isconcrete(v) for v in values]]))
    sort!(value_set)


    if  length(value_set) / length(values) < 0.9
        d, bincounts, x_max = choose_bin_count_1d_discrete(
                    values, value_set, stat.minbincount, stat.maxbincount)

这很奇怪,因为它不是离散数据,也不应该是离散箱。如果它choose_bin_count_1d改用它,它会得到更明智的答案。我认为bincount更改支持的问题可能是一个相关的错误,但不确定这是如何发生的。您应该在 Gadfly github 页面上提出问题。

于 2014-09-21T22:58:15.400 回答