在1轴上显示5个直方图 - 朱莉娅

时间:2016-09-01 13:41:08

标签: matplotlib histogram julia plotly

引用此链接Displaying 3 histograms on 1 axis in a legible way - matplotlib在python中的1轴上显示3个直方图,我试图在julia中执行相同的操作,但无法识别dic函数。

这是julia的代码。函数dict无法识别。

using PyCall
@pyimport matplotlib.pyplot as plt



a=vec(rand(1:1000,400,300))
b = vec(rand(200:700,400,300))
c = vec(rand(300:1200,400,300))

common_params = dict(bins=20, 
                     range=(-5, 5), 
                     normed="True")

plt.subplots_adjust(hspace=.4)
plt.subplot(311)
plt.title('Default')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)
plt.subplot(312)
plt.title('Skinny shift - 3 at a time')
plt.hist((a, b, c), **common_params)
plt.subplot(313)
common_params['histtype'] = 'step'
plt.title('With steps')
plt.hist(a, **common_params)
plt.hist(b, **common_params)
plt.hist(c, **common_params)

plt.savefig('3hist.png')
plt.show()
我尝试使用:plotly和l也遇到了一些问题。这是使用plotly的代码

using Plotly

x0 = randn(500)
x1 = randn(500)+1


trace1 = [
  "x" => x0,
  "type" => "histogram"
]
trace2 = [
  "x" => x1,
  "type" => "histogram"
]
data = [trace1, trace2]
layout = ["barmode" => "stack"]
response = Plotly.plot(data, ["layout" => layout, "filename" => "stacked-histogram", "fileopt" => "overwrite"])
plot_url = response["url"]

返回的错误是:

WARNING: deprecated syntax "[a=>b, ...]" at /home/anelmad/Desktop/stage-inria/code/HTreeRBM.jl/my_tree/random_data/graph_try.jl:20.
Use "Dict(a=>b, ...)" instead.
ERROR: LoadError: MethodError: `convert` has no method matching convert(::Type{PlotlyJS.Plot{TT<:PlotlyJS.AbstractTrace}}, ::Array{Dict{ASCIIString,Any},1}, ::Dict{ASCIIString,Any})
This may have arisen from a call to the constructor PlotlyJS.Plot{TT<:PlotlyJS.AbstractTrace}(...),
since type constructors fall back to convert methods.
Closest candidates are:
  PlotlyJS.Plot{T<:PlotlyJS.AbstractTrace}(::Array{T<:PlotlyJS.AbstractTrace,1}, ::Any)
  PlotlyJS.Plot(::PlotlyJS.AbstractTrace, ::Any)
  call{T}(::Type{T}, ::Any)

2 个答案:

答案 0 :(得分:3)

Julia有自己的matplotlib接口叫var azureFileRest = new AzureFileREST(sasToken); await azureFileRest.CreateIfNotExist(directoryName); await azureFileRest.UploadFile(directoryName + "/" + fileName, bytes); 。 (你没有真的希望你只需键入PyPlot然后只需将python代码写入julia并神奇地让它完成所有工作,是吗?:D)< / p>

有关如何使用@pyimport的示例,请参阅here; hist图特别需要一些特殊的语法来区分它与julia原生PyPlot函数(check the code for its example)。

这是你的代码尽我所能翻译成PyPlot(在Julia v0.6.0中工作)

hist

我不确定你为什么选择(-5,5)的范围;这导致第三个子情节出现问题。我已经把它变成了更合理的东西,只是为了向你展示这个作品。

以下是结果:

enter image description here

答案 1 :(得分:0)

&#34; julia&#34;代码看起来像普通的Python,这不是PyCall的工作方式。因此,dict()不是Julia函数,但您可以编写以下内容来获取Julia字典:

common_params = Dict("bins" => 20,  "range" => (-5, 5),  "normed" => true)

Plotly示例的错误消息与您的代码不匹配。代码using Plotly引用的错误消息不同于指示您正在使用PlotlyJS的错误消息(Plotly和PlotlyJS是不同的包,PlotlyJS.jl是用于julia v0.4的推荐包更新)。