首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个简单的图形数字化器?

一个简单的图形数字化器?
EN

Stack Overflow用户
提问于 2020-11-03 16:10:21
回答 1查看 162关注 0票数 2

有时,将扫描过的图形数字化以获取数据和重新绘制绘图可能是有用的。我知道有一些具有许多特性的专用工具,例如,请参阅gnuplot主页上的杂项链接:http://gnuplot.info/links.html

但是,是否有一种只使用gnuplot的方法呢?也许只需几行代码,您就可以实现一个简单版本的数字化器?对于某些情况下只有有限数量的数据点来说,这应该已经足够了。

(编辑:原问题的一部分现在作为答案)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-20 06:53:05

万一这对某人有用..。这个gnuplot版本只是为了好玩、共享和演示gnuplot功能。改进是值得欢迎的。

  • 对数轴、时间轴、多重曲线、倾斜图像等

它的工作原理:

  • 图像被导入到图形中。gnuplot支持GIF、JPG、PNG等。要查看文件类型的列表,show datafile binary filetype.
  • the前3个鼠标必须位于y-轴的末尾,2)原点,3) x-axis
  • further鼠标的末尾绘制数据点

实现了以下键绑定:

  • 0 (重新)定义从y轴的末尾到原点到x轴的末尾的轴,删除所有数据点
  • c只清除最后一次数据池
  • 的保存数据到文件

F 222

代码:

代码语言:javascript
复制
### a simple gnuplot digitizer
reset session
 
IMAGE = 'Superconductivity.png'
DATAFILE = 'Digitized.dat'
 
OriginX = 4.00
OriginY = 0.00
AxisYEnd = 0.15
AxisXEnd = 4.40
 
DataHeader = '# Temperature Resistance'
set print $Data
    print DataHeader
set print
print $Data
 
$Axes <<EOD
EOD
 
set margins 0,0,0,0
AxesPoints = 0
 
fx(point) = (word(point,1)-word($Axes[2],1))/(word($Axes[3],1)-word($Axes[2],1))*(AxisXEnd - OriginX)+OriginX
fy(point) = (word(point,2)-word($Axes[2],2))/(word($Axes[1],2)-word($Axes[2],2))*(AxisYEnd - OriginY)+OriginY
 
bind Button1 '\
    if (AxesPoints<3) { set print $Axes append; print MOUSE_X, MOUSE_Y; AxesPoints=AxesPoints+1; replot; } \
    else { set print $Data append; print MOUSE_X, MOUSE_Y; set print; replot; }'
 
bind 0 'AxesPoints=0; set print $Axes; print ""; set print; replot;'
 
bind x 'set print $Data; print DataHeader; set print; replot'
 
bind c 'if (|$Data|>2) {array A[|$Data|]; do for [i=2:|$Data|-1] { A[i]=$Data[i] }; \
        set print $Data; do for [i=1:|A|-1] { print A[i] }; } \
        else {set print $Data; print DataHeader; }; set print; replot;'
 
bind s 'set print DATAFILE; print $Data[1]; set print DATAFILE append; \
        do for [i=2:|$Data|] { print sprintf("%g %g", fx($Data[i]), fy($Data[i])) }; \
        set print; pause -1 sprintf("Data saved to: %s",DATAFILE);'
 
plot IMAGE binary filetype=auto origin=(0,0) dx=1 dy=1 with rgbimage notitle, \
     $Axes u 1:2 w l lw 2 lc "blue" noautoscale not, \
     $Data u 1:2 w p pt 7 lc "red" noautoscale notitle
### end of code

输入: Superconductivity.png

过程:( wxt终端屏幕截图)

结果: Digitized.dat

代码语言:javascript
复制
# Temperature Resistance
4.3696 0.130726
4.3328 0.126117
4.232 0.113966
4.20241 0.00157884
4.19248 0.000406976
4.18307 0.000751641
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64666454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档