在Gnuplot中,如何在for循环的同一图上多次绘制函数

达斯比

在gnuplot中,我试图绘制一个具有5个参数的函数,该函数的值存储在一个外部文件中,在同一张图上8次。我想将8种物质的蒸气压与温度作图。蒸汽压力由5个变量设定。我已经尝试过使用do-for循环,但是只能绘制一个物种。如何使用8组参数在同一图上绘制函数8次?下面的代码基于此答案,并且可以运行,除了给出的答案将打印8 png,但我想设置为1,并对其进行了修改。

parameters.txt

A   B   C   D   E
33.634  -3647.9 -8.6428 -9.69E-11   1.19E-06
19.419  -5869.9 -0.4428 -1.26E-02   5.22E-06
-15.077 -4870.2 14.501  -3.16E-02   1.35E-05
76.1    -5030   -25.078 9.76E-03    -2.58E-13
2.1667  -2631.8 4.035   -1.18E-02   6.10E-06
39.917  -4132   -10.78  1.97E-10    2.04E-06
29.89   -3953.5 -7.2253 2.11E-11    8.96E-07
99.109  -7533.3 -32.251 1.05E-02    1.23E-12

vapor.plt

reset
datafile = "parameters.txt"

set terminal pngcairo
set xrange [273.15:493.15]
set logscale y
set output "vapor.png"
do for [step=1:8] {
    # read parameters from file, where the first line is the header, thus the +1
    a=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $1}' " . datafile)
    b=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $2}' " . datafile)
    c=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $3}' " . datafile)
    d=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $4}' " . datafile)
    e=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $5}' " . datafile)

    # convert parameters to numeric format
    a=a+0.
    b=b+0.
    c=c+0.
    d=d+0.
    e=e+0.

    plot 10**(a + b/x + c*log10(x) + d*x + e*x**2) title ''
}
set output
克里斯多夫

要将多个函数绘制到一张图中,您必须仅使用一个plot命令,并用逗号分隔函数:

plot f(x), g(x), h(x)

这将在一个图中绘制所有三个函数。对于您的情况,您需要首先提取参数,使其具有a1,,a2...a8等。这样做的好处是,您可以为参数集设置一个键(图例)。

第二个选项更适合您现有的脚本。您需要将plot呼叫放在multiplot

reset
datafile = "parameters.txt"

set terminal pngcairo
set xrange [273.15:493.15]
set logscale y
set output "vapor.png"

set lmargin at screen 0.1
set rmargin at screen 0.9
set bmargin at screen 0.1
set tmargin at screen 0.9

set multiplot
do for [step=1:8] {
    # read parameters from file, where the first line is the header, thus the +1
    a=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $1}' " . datafile)
    b=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $2}' " . datafile)
    c=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $3}' " . datafile)
    d=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $4}' " . datafile)
    e=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $5}' " . datafile)

    # convert parameters to numeric format
    a=a+0.
    b=b+0.
    c=c+0.
    d=d+0.
    e=e+0.

    plot 10**(a + b/x + c*log10(x) + d*x + e*x**2) lt step title ''

    if (step == 1) {
        unset border
        unset xtics
        unset ytics
    }
}
unset multiplot
set output

multiplot每次使用边框和抽签时都会重绘,这看起来很丑陋(粗略)。为此,我在第一个绘图后未设置边框,xtics和ytics。但是为了使所有图都有相同的边距,我在开始时设置了固定的绝对边距。可以保留自动边距,该边距是使用第一个图计算的,但是这有点冗长(请参阅文档中的“ Gnuplot定义的变量”主题)。

对于每个图,我还使用了不同的线型。上面的脚本给出了输出:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Gnuplot中,如何在for循环中的同一图上多次绘制函数

来自分类Dev

如何在for循环中在同一图上绘制一系列点

来自分类Dev

如何在同一视图上多次调用角度组件?

来自分类Dev

如何在Python 3中的同一图上绘制多个对象的实例属性

来自分类Dev

如何在ggplot2中的同一图上绘制线和点?

来自分类Dev

如何在Gnuplot中循环遍历同一文件以生成png文件?

来自分类Dev

如何在gnuplot中绘制循环数据文件?

来自分类Dev

使用for循环在同一图上绘制多个图

来自分类Dev

如何在 R 中的同一图中绘制两个不同的用户定义函数

来自分类Dev

如何在同一函数上绘制不同的域

来自分类Dev

如何在Python的同一图上绘制两个不同的时间序列

来自分类Dev

闪亮:如何在同一张传单地图上绘制多个参数?

来自分类Dev

如何在同一图上将多个CSV文件绘制为箱图

来自分类Dev

如何在条形图和折线图的同一图上绘制多个列表?

来自分类Dev

如何在同一张图上绘制来自不同模型的多个学习曲线?

来自分类Dev

如何在RSPEC中多次重用同一测试

来自分类Dev

如何在daru中多次汇总同一列

来自分类Dev

如何在同一活动中多次单击按钮

来自分类Dev

如何使用matplotlib在同一图上绘制多个轨迹

来自分类Dev

如何在python的同一图形中绘制多条线?

来自分类Dev

在Matlab中,在同一图上绘制热图和线图

来自分类Dev

在Matlab中,在同一图上绘制热图和线图

来自分类Dev

Gnuplot:循环绘制不同的函数

来自分类Dev

Gnuplot:循环绘制不同的函数

来自分类Dev

在select中多次调用同一函数

来自分类Dev

在select中多次调用同一函数

来自分类Dev

如何在gnuplot中绘制球体的表面?

来自分类Dev

如何使用循环多次(同步)调用同一个异步函数?

来自分类Dev

使用for循环在gnuplot的列中绘制数字的反函数

Related 相关文章

  1. 1

    在Gnuplot中,如何在for循环中的同一图上多次绘制函数

  2. 2

    如何在for循环中在同一图上绘制一系列点

  3. 3

    如何在同一视图上多次调用角度组件?

  4. 4

    如何在Python 3中的同一图上绘制多个对象的实例属性

  5. 5

    如何在ggplot2中的同一图上绘制线和点?

  6. 6

    如何在Gnuplot中循环遍历同一文件以生成png文件?

  7. 7

    如何在gnuplot中绘制循环数据文件?

  8. 8

    使用for循环在同一图上绘制多个图

  9. 9

    如何在 R 中的同一图中绘制两个不同的用户定义函数

  10. 10

    如何在同一函数上绘制不同的域

  11. 11

    如何在Python的同一图上绘制两个不同的时间序列

  12. 12

    闪亮:如何在同一张传单地图上绘制多个参数?

  13. 13

    如何在同一图上将多个CSV文件绘制为箱图

  14. 14

    如何在条形图和折线图的同一图上绘制多个列表?

  15. 15

    如何在同一张图上绘制来自不同模型的多个学习曲线?

  16. 16

    如何在RSPEC中多次重用同一测试

  17. 17

    如何在daru中多次汇总同一列

  18. 18

    如何在同一活动中多次单击按钮

  19. 19

    如何使用matplotlib在同一图上绘制多个轨迹

  20. 20

    如何在python的同一图形中绘制多条线?

  21. 21

    在Matlab中,在同一图上绘制热图和线图

  22. 22

    在Matlab中,在同一图上绘制热图和线图

  23. 23

    Gnuplot:循环绘制不同的函数

  24. 24

    Gnuplot:循环绘制不同的函数

  25. 25

    在select中多次调用同一函数

  26. 26

    在select中多次调用同一函数

  27. 27

    如何在gnuplot中绘制球体的表面?

  28. 28

    如何使用循环多次(同步)调用同一个异步函数?

  29. 29

    使用for循环在gnuplot的列中绘制数字的反函数

热门标签

归档