Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 朱莉娅:两个x轴用于相同数据的绘图_Julia_Plotly - Fatal编程技术网

Julia 朱莉娅:两个x轴用于相同数据的绘图

Julia 朱莉娅:两个x轴用于相同数据的绘图,julia,plotly,Julia,Plotly,对于某些函数,使用两个x轴绘制一个数据集既方便又常见。我手边的例子是一个函数,其形式为f(T)=a*exp(-H/(R*T)),它将以1/T在x轴上绘制,以log(f)在y轴上绘制。在这种形式下,它方便地显示为一条直线,但为了便于读取实际温度T,而不是1/T,通常将相应的T值放在同一绘图的第二个x轴上(当然,这是反向的,也不是线性间隔的)。我如何与Julia和Plotly一起实现这一点 下面是我试图绘制的绘图类型的示例。值得一提的是,在Gnuplot中,额外的第二个(上)x轴将通过1./x逆1.

对于某些函数,使用两个x轴绘制一个数据集既方便又常见。我手边的例子是一个函数,其形式为
f(T)=a*exp(-H/(R*T))
,它将以
1/T
在x轴上绘制,以
log(f)
在y轴上绘制。在这种形式下,它方便地显示为一条直线,但为了便于读取实际温度
T
,而不是
1/T
,通常将相应的
T
值放在同一绘图的第二个x轴上(当然,这是反向的,也不是线性间隔的)。我如何与Julia和Plotly一起实现这一点

下面是我试图绘制的绘图类型的示例。值得一提的是,在Gnuplot中,额外的第二个(上)x轴将通过1./x逆1./x使用
设置链接x2创建。

要添加第二个Y轴,在
Plots.jl
包中有一个
twinx()
方法。不幸的是,没有允许添加次X轴的
twny()
方法

但是,您可以使用
twinx()
code并简单地将其转置:

function twiny(sp::Plots.Subplot)
    sp[:top_margin] = max(sp[:top_margin], 30Plots.px)
    plot!(sp.plt, inset = (sp[:subplot_index], bbox(0,0,1,1)))
    twinsp = sp.plt.subplots[end]
    twinsp[:xaxis][:mirror] = true
    twinsp[:background_color_inside] = RGBA{Float64}(0,0,0,0)
    Plots.link_axes!(sp[:yaxis], twinsp[:yaxis])
    twinsp
end
twiny(plt::Plots.Plot = current()) = twiny(plt[1])
现在就这样使用它:

using Plots
plot(1:10,rand(10), label = "randData", ylabel = "Y axis",color = :red, legend = :topleft, grid = :off, xlabel = "Numbers Rand")
p = twiny()
plot!(p,5:15,log.(5:15), label = "log(x)", legend = :topright, box = :on, grid = :off, xlabel = "Log values")

谢谢你的建议,但我认为这不是我的意思,我也没有设法修改它以满足我的需要。我编辑了我原来的帖子,并添加了一张示例图片以供澄清。其目的不是添加具有不同x轴的第二条曲线,而是以不同的单位/比例显示具有两个x轴的曲线(在这种情况下,温度和温度相反)。请注意,这还包括反转第二个x轴。不过,我应该补充一点,您的代码本身非常有价值。如果Plots中已经有twinx方法,我想知道为什么twiny也没有实现。你有没有计划尝试让你的小宝石成为官方图景的一部分?是的-可能值得做一个公关。关于你需要做什么(更新)应该很容易-图景中有添加自定义刻度的功能-当我知道如何做时,会发帖子;-)