gpt4 book ai didi

bash - 如何在 gnuplot 中为线属性使用数据库(或 bash 数组)值?

转载 作者:行者123 更新时间:2023-11-29 09:30:25 25 4
gpt4 key购买 nike

我有一个如下所示的数据库文件:

aaa bb ccc 2 3.34534 kkk 3 4.5099 34%
rr wie fff 4 4.59050 asd 6 5.0983 1.345%

我需要绘制一个范围,从第 5 列的“y”值(即 3.34534)开始到第 8 列的值。或者说,第一行的 y=3.34534 线宽为 4.5099-3.34534。或者,第一行是 y=3.34534 和 y=4.5099 之间的某种填充曲线。必须对第 5 列和第 8 列值之间的所有线条进行填充曲线。问题是,如何访问这些值并将它们输入到 gnuplot 中。也许是一个 shell 脚本? (到目前为止,我已经设法将值保存到数组 x() 和 y() 中:对于 ${x[0]} 访问的 column5 第一行中的值和第 8 列中的值到 ${y[0] },现在的问题是如何通过 EOF>> 将数组中的值输入到 gnuplot 语法中。任何帮助表示赞赏。

最佳答案

如果你想在 bash 脚本中把所有东西都放在一起,你可以先定义一个变量,它包含所有 gnuplot 代码(参见例如 BASH: Keeping formatting but substituting variables ):

read -r -d '' GNUPLOT_SCRIPT <<EOF
set xrange [0:1];
plot x
EOF

请注意,对于该结构,gnuplot 代码的每一行都必须以 ; 结尾。

对于绘图,我会使用 boxxyerrorbars 绘图样式,它在具有给定宽度和高度的点处绘制框。在 gnuplot using 语句中,第一个和第二个值是方框 centerxy 值,第三个和第四个值给出了 half 框的宽度和高度。

你没有说任何关于 x 值的事情,所以我选择 xrange01

假设您的“数据库”在一个字符串中,bash 脚本如下所示:

#!/bin/bash

database="aaa bb ccc 2 3.34534 kkk 3 4.5099 34%
rr wie fff 4 4.59050 asd 6 5.0983 1.345%"

read -r -d '' GNUPLOT_SCRIPT <<EOF
set xrange[0:1];
set style fill solid 1.0;
set style data boxxyerrorbars;
unset key;
plot '-' using (0.5):(0.5*(column(5)+column(8))):(0.5):(abs(0.5*(column(5) - column(8))))
EOF

echo "$database" | gnuplot -persist -e "$GNUPLOT_SCRIPT"

如果要将绘图保存在文件中,则不需要 -persist 选项。

关于bash - 如何在 gnuplot 中为线属性使用数据库(或 bash 数组)值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19930661/

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