引用此链接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)
答案 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)的范围;这导致第三个子情节出现问题。我已经把它变成了更合理的东西,只是为了向你展示这个作品。
以下是结果:
答案 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的推荐包更新)。