如何在gnuplot中通过计算横坐标上的平均值绘制图形

如何在gnuplot中通过计算横坐标上的平均值绘制图形,gnuplot,average,Gnuplot,Average,我的数据文件格式为“休耕”: 100;2.123;4.123 100;2.113;5.213 100;2.544;6.234 100;2.324;4.234 200;2.543;3.123 200;2.543;5.123 ... 第一列是函数的参数,第二列和第三列是函数的结果。由于其他因素,第2列和第3列的值对于第1列的相同值是不同的,我想绘制一个图表,计算第2列和第3列中具有相同第1列的所有值的算术平均值 gnuplot有什么办法可以做到这一点吗?是的! 首先,更换每一个;那是一片空白 试试

我的数据文件格式为“休耕”:

100;2.123;4.123
100;2.113;5.213
100;2.544;6.234
100;2.324;4.234
200;2.543;3.123
200;2.543;5.123
...
第一列是函数的参数,第二列和第三列是函数的结果。由于其他因素,第2列和第3列的值对于第1列的相同值是不同的,我想绘制一个图表,计算第2列和第3列中具有相同第1列的所有值的算术平均值

gnuplot有什么办法可以做到这一点吗?

是的! 首先,更换每一个;那是一片空白 试试这个命令

plot "your_data_file" using ($1):(($2+$3)/2) 

要计算共享相同第一个值的所有值的算术平均值,您可以使用
smooth unique
。要获得同一横坐标第2列和第3列所有值的平均值,可以使用

set datafile separator ';'
plot 'datafile' using 1:(($2+$3)/2.0) smooth unique
这使得数据在
x
-值中单调,然后用一个具有平均
y
-值的点替换具有相同横坐标的所有点

例如,如果您只需要第二列的平均值,则可以使用

plot 'datafile' using 1:2 smooth unique

您可以使用命令
设置数据文件分隔符”;“
”,而不是更改文件的格式。我的猜测是,一般来说,这将非常棘手,尽管在数据上有一些限制是可行的。例如,如果第一列中的每个值始终按顺序显示四次。你有任何这样有用的约束条件吗?对于任意数据,我建议使用单独的实用程序进行预处理。第1列中的每个值始终按顺序显示4次。我使用excel作为一个单独的工具,我对这个解决方案不满意。你误解了我的问题(或者,更可能的是,我解释得不够清楚)。我不想要2.123和4.123的平均值,而是2.123、2.113、2.544和2.324的平均值=2276,用100绘制,4.123、5.213、6.234、4.234=4.951,也用100绘制(作为绘图上的不同系列)。编辑:使用第二种解决方案无法正确绘制-我认为第二列中的值相加并绘制为100。如果希望第二列和第三列属于不同的系列,可以使用
使用1:2 smooth unique绘制“数据文件”,使用1:3 smooth unique绘制“数据文件”
。或者你想在这两个系列之间建立一些联系吗?哦,我认为这很好;)谢谢只有两个简单的问题:1。有没有办法在每个值上增加偏差?2.我使用1:2:xtic(1)fot X轴仅显示数据文件中的值,但如何显示均匀分布的值?使用例如带有错误条的
来添加偏差。这些值也要进行平滑处理。关于
x
-轴:在您的情况下,始终使用四个相同的
x
-值,您可以使用
使用(int(floor($0/4.0)):2:xtic(1)smooth unique
,或使用errorbar,例如
使用(int(floor($0/4.0)):2:(1):xtic(1)smooth unique with errorbar
。但这几乎是一个新问题。