Gnuplot Filled曲线翻转轴

Gnuplot Filled曲线翻转轴,gnuplot,Gnuplot,有一种样式可以填充x的两个函数之间的空间。 可在以下位置找到此类图的示例: 有没有办法制作类似的绘图,但使用翻转的x轴和y轴? 这是所需的曲线形状(当然没有旋转/镜像标签、标题和图例) 可以使用闭合轮廓(如这里的最后一个示例)完成,但这需要重新排列数据文件。还有其他选择吗 谢谢大家! 你不能直接这么做。从帮助填充曲线: 第三种变体填充在同一组曲线上采样的两条曲线之间的区域 x坐标。它需要三列输入数据(x、y1、y2) 我认为不能直接指定(y,x1,x2)。作为一种解决方法,您可以用某种颜色填充

有一种样式可以填充x的两个函数之间的空间。 可在以下位置找到此类图的示例: 有没有办法制作类似的绘图,但使用翻转的x轴和y轴? 这是所需的曲线形状(当然没有旋转/镜像标签、标题和图例)

可以使用闭合轮廓(如这里的最后一个示例)完成,但这需要重新排列数据文件。还有其他选择吗


谢谢大家!

你不能直接这么做。从
帮助填充曲线

第三种变体填充在同一组曲线上采样的两条曲线之间的区域 x坐标。它需要三列输入数据(x、y1、y2)

我认为不能直接指定(y,x1,x2)。作为一种解决方法,您可以用某种颜色填充y轴和较大函数之间的区域,然后用白色填充y轴和较小函数之间的区域:

x1(y) = cos(y)+1
x2(y) = cos(y)+2
xmax(y) = (x1(y) > x2(y) ? x1(y) : x2(y))
xmin(y) = (x1(y) < x2(y) ? x1(y) : x2(y))

plot '+' using (xmax($1)):1 with filledcurve y1, \
     '+' using (xmin($1)):1 with filledcurve y1 fillcolor rgb "white"
x1(y)=cos(y)+1
x2(y)=cos(y)+2
xmax(y)=(x1(y)>x2(y)?x1(y):x2(y))
xmin(y)=(x1(y)


如果两个函数中的一个或两个都是负数,则可能需要对其进行一些调整。

如果gnuplot>=5.2,则可能需要进一步调整,因为它允许数组。 下面的代码显示了如何实现垂直方向曲线之间的填充曲线的解决方法。你甚至可以使用透明度。如果你下载附加的PNG,你会注意到它实际上有一个透明的背景。此解决方案的基本思想是创建封闭区域并填充它们。为此,您需要反转一个边框,连接边框并打印它们。不幸的是,gnuplot没有函数来反转列中的数据点,所以您必须自己在一个特殊的过程中完成

守则:

### "Vertical" filledcurves
reset session

# create some dummy data
N = 50
set samples N
set xrange [-5:5]
set table $Data
    plot '+' u (sin($1)):1:(rand(0)*0.3+1) with table
unset table

# put Borders into arrays
stats $Data nooutput
RowCount = STATS_records
array BorderX1[RowCount]
array BorderX2[RowCount]
array BorderY[RowCount]
set table $Dummy
    plot $Data u (BorderX1[$0+1]=$1-$3):(BorderX2[$0+1]=$1+$3):(BorderY[$0+1]=$2) with table
unset table

# reverse BorderX2 and merge borders
set samples RowCount
set table $Border
    plot '+' u (BorderX1[$0+1]):(BorderY[$0+1]) with table
    plot '+' u (BorderX2[RowCount-$0]):(BorderY[RowCount-$0]) with table
unset table

# make the plot
set object 1 rect at 0,-3 size 10,0.5 fs solid 1.0 fc rgb "black" back
set yrange[-5:5]
plot \
    $Border u 1:2 w filledcurves fc rgb "#AA00FF00" not,\
    $Border u ($1*1.5):2 w filledcurves fc rgb "#AAFFFF00" not,\
    $Data u ($1+2.5):2 w filledcurves y2 fc rgb "brown" not,\
    $Data u 1:2 w l lw 8 lc rgb "blue" not,\
    '+' u 1:(cos($1)-0.5):(cos($1)+0.5) w filledcurves lc rgb "grey" not,\
    '+' u 1:(cos($1)):(1) w l lw 3 dt 2 lc rgb "white" not
### end of code
结果是:


从技术上讲,上述图纸不再是x的函数。实际上是打印函数还是从数据文件打印?如果您包含的代码接近您想要的,那么它也会有所帮助。函数更难,需要反转函数。数据文件会更容易。查看实际旋转tic标记,并将“标题”作为旋转标签放置。传奇更难。但是根据上面的内容,在plot命令中有一个空白标题(title“”)。如果你需要一个传奇,谢谢!我试图绘制一个数据文件。也许,使用Filled Curves闭合和调整的数据文件确实更容易…谢谢!很好的调整!在我的例子中,它甚至更简单,因为每条线都是百分位数。。