gpt4 book ai didi

Julia:两个 x 轴用于绘制相同数据

转载 作者:行者123 更新时间:2023-12-04 08:48:56 24 4
gpt4 key购买 nike

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

这是我尝试制作的 plotly 类型的示例。对于它的值(value),在 Gnuplot 中,额外的第二个(上)x 轴将使用 set link x2 via 1./x inverse 1./x 创建。 . conductivity vs. temperature

最佳答案

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

但是,您可以使用 twinx() 代码并简单地转置它:

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")

enter image description here

关于Julia:两个 x 轴用于绘制相同数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64176617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com