我正在寻找类似的功能,ribbon可以让我使用 Julia Plots 填充垂直曲线之间的区域x=x(y)。现在,使用ribbonallowed 填充两条曲线之间的区域y=y(x),如下例所示:
using Plots
y(x) = broadcast(sin, x)
x = range(0.0, 3.14, length=30)
plot(x,y(x), ribbon=(zero(x).+0.05, zero(x).+0.1))
savefig("ribbon_example.png")
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种在水平方向上获得类似丝带的方法。我认为类似的关键字参数选项尚不存在(请参阅此问题),但我想知道是否存在解决此问题的其他选项。对于其他示例,这里是我需要的 Python matplotlib 实现。
这是我有时做过的一件很奇怪的事情。在 Julia 图中(无论如何使用默认的 GR 后端),您通常可以让它填充一个“形状”——即这里我已经实现了它在两个正弦函数之间垂直填充:
\nx=0:\xcf\x80/64:2\xcf\x80\ny=sin.(x)\ny2=sin.(x).-0.1\nplot(y,x,label="curve 1")\nplot!(y2,x,label="curve 2")\n\nshapex = vcat(x,[x[end],x[end]],reverse(x),[x[1],x[1]]) \nshapey = vcat(y,[y[end],y2[end]],reverse(y2),[y2[1],y[1]])\n\n#what i\'ve done above is gone up curve 1, then added two points (defines a line) \n#at the ends of curve 1 and curve 2 to connect them, then gone back down curve 2, \n#then finally added one more line that jumps back from curve 2 to where we started \n#then we have a fully bound shape!\n\nplot!(shapey,shapex,fill=true,label="filled shape",linewidth=0.,fillalpha=0.5,aspect_ratio=:equal,xlims=(-1.5,1.5),size=(360,540))\nRun Code Online (Sandbox Code Playgroud)\n输出该图:
\n\n使用它,您可以复制 matplotlib 示例,但您必须逐步思考并边做边做形状。绝对不理想,但它有效——这是我最近使用这种方法为一篇论文生成的更复杂的图:
\n\n您可以做的另一件事(这也不理想)是水平绘制您的内容并使用内置函数填充,但旋转所有刻度/标签/图例/等,以便最后您可以旋转保存的内容结果图 90 度,然后它显示出正确的行为......
\n