linux – gnuplot – 两个图的交集
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – gnuplot – 两个图的交集,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2435字,纯文字阅读大概需要4分钟。
内容图文
![linux – gnuplot – 两个图的交集](/upload/InfoBanner/zyjiaocheng/955/46b313b9f8044860b19321a8421b32a8.jpg)
我正在使用gnuplot来绘制来自两个单独的csv文件(在此链接中找到:https://drive.google.com/open?id=0B2Iv8dfU4fTUZGV6X1Bvb3c4TWs)中的数据,这些文件具有不同的行数,从而生成以下图表.
这些数据似乎在两个csv文件中都没有共同的时间戳(第一列),但gnuplot似乎符合上图所示的绘图.
这是我用来生成我的情节的gnuplot脚本.
# ###### GNU Plot
set style data lines
set terminal postscript eps enhanced color "Times" 20
set output "output.eps"
set title "Actual vs. Estimated Comparison"
set style line 99 linetype 1 linecolor rgb "#999999" lw 2
#set border 1 back ls 11
set key right top
set key box linestyle 50
set key width -2
set xrange [0:10]
set key spacing 1.2
#set nokey
set grid xtics ytics mytics
#set size 2
#set size ratio 0.4
#show timestamp
set xlabel "Time [Seconds]"
set ylabel "Segments"
set style line 1 lc rgb "#ff0000" lt 1 pi 0 pt 4 lw 4 ps 0
plot "estimated.csv" using ($1):2 with lines title "Estimated", "actual.csv" using ($1):2 with lines title "Actual";
有没有什么方法可以通过忽略绿色图上方的峰来打印出(写入文件)这些图的交叉点的值?我也试过做一个sql-join查询,但由于我上面解释的原因,它似乎没有打印出来.
PS:如果蓝线没有触及绿线(即如果它在绿线下方),我想取最近绿线的值,这样它就是一对一的对应关系(或者非常接近)与实际数据集.
解决方法:
或许可以某种方式迫使Gnuplot在精细网格上重新插入两个数据集,保存这些辅助数据然后逐行比较.但是,我认为将此任务委托给外部工具确实更为实际.
它当然不是最有效的方法,但是“懒惰的方法”可能是读取数据点,将每个数据集解释为LineString(线段集合,基本上相当于假设数据点之间的线性插值)然后计算交点.在Python中,执行此操作的脚本可能如下所示:
#!/usr/bin/env python
import sys
import numpy as np
from shapely.geometry import LineString
#-------------------------------------------------------------------------------
def load_data(fname):
return LineString(np.genfromtxt(fname, delimiter = ','))
#-------------------------------------------------------------------------------
lines = list(map(load_data, sys.argv[1:]))
for g in lines[0].intersection(lines[1]):
if g.geom_type != 'Point':
continue
print('%f,%f' % (g.x, g.y))
然后在Gnuplot中,可以直接调用它:
set terminal pngcairo
set output 'fig.png'
set datafile separator comma
set yr [0:700]
set xr [0:10]
set xtics 0,2,10
set ytics 0,100,700
set grid
set xlabel "Time [seconds]"
set ylabel "Segments"
plot 'estimated.csv' w l lc rgb 'dark-blue' t 'Estimated', 'actual.csv' w l lc rgb 'green' t 'Actual', '<python filter.py estimated.csv actual.csv' w p lc rgb 'red' ps 0.5 pt 7 t ''
这使:
内容总结
以上是互联网集市为您收集整理的linux – gnuplot – 两个图的交集全部内容,希望文章能够帮你解决linux – gnuplot – 两个图的交集所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。