Gnuplot画布:tics在缩放时消失

时间:2014-05-13 13:24:04

标签: javascript html canvas gnuplot

我在与我工作相关的网络界面上工作了一段时间。我有一些数据,我迭代地适应模型。在每次迭代中,我都会创建一个Gnuplot图形,该图形上线以帮助我跟踪过程。它工作得很好,但是,我有一些与帆布终端相关的小问题,我很长时间都无法修复。我使用Gnuplot 4.6.5和几个浏览器。他们都表现得一致。

这是一个这样一个页面的例子,有两个数字: http://stelweb.asu.cas.cz/~nemeth/xtgrid_log/xtgrid_008_r1458384bfCsdd_dat.html

我对x轴的抽动和分辨率感到困惑,我认为这些问题可能是相关的:

1 - 图下方的x轴坐标不显示小数。我认为x坐标被Gnuplot截断了。

2 - 当我们放大时,轴的抽动消失。

3 - 我有一些标签定义为:"设置标签位于x,屏幕0.2' ...某些标签......' "     放大时这些标签会消失,即使它们设置为屏幕y坐标(0.2)。

4 - 当鼠标移动到图2并再次返回到1时,图1中的缩放重置。这可能是一个html / java问题。

生成这些数字的Gnuplot脚本如下所示:

set encoding iso_8859_1
set terminal canvas solid butt size 1024,410 name figure1  mousing lw 0.7 
set output "figure1.js"
set samples 50, 50
set size ratio 0.4
set xtics autofreq 200
set mxtics 4
set xr [4000:5000]
set ylab "Relative flux"
set xlab "Wavelength (\305)"
set format y "%1.1e"
load 'lines.gnp' # just a bunch of labels
plot " ... some file ... "

我想知道是否对这些不便有一般性的解决方法。

问题#4: Gnuplot生成的javascript就像这样开始:

function ALue310128bfCsdd_dat_7_0() 
  {
  canvas = document.getElementById("ALue310128bfCsdd_dat_7_0");
  ctx = canvas.getContext("2d");
  // Reinitialize mouse tracking and zoom for this particular plot
  if ((typeof(gnuplot.active_plot) == "undefined" || gnuplot.active_plot != ALue310128bfCsdd_dat_7_0)  &&  typeof(gnuplot.mouse_update) != "undefined")
    {
    gnuplot.active_plot_name = "ALue310128bfCsdd_dat_7_0";
    gnuplot.active_plot = ALue310128bfCsdd_dat_7_0;
    canvas.onmousemove = gnuplot.mouse_update;
    canvas.onmouseup = gnuplot.zoom_in;
    canvas.onmousedown = gnuplot.saveclick;
    canvas.onkeypress = gnuplot.do_hotkey;
    if (canvas.attachEvent) {canvas.attachEvent('mouseover', ALue310128bfCsdd_dat_7_0);
    }
  else if (canvas.addEventListener) 
    {canvas.addEventListener('mouseover',   ALue310128bfCsdd_dat_7_0, false);}
  gnuplot.zoomed = false;
  gnuplot.zoom_axis_width = 0;
  gnuplot.zoom_in_progress = false;
  gnuplot.polar_mode = false;
  ctx.clearRect(0,0,1280,513);
  }

gnuplot.zoomedgnuplot.zoom_in_progress变量似乎与重新初始化缩放级别有关。

1 个答案:

答案 0 :(得分:1)

  1. 如果您指的是鼠标盒的坐标:例如wxt这些鼠标坐标的格式适用于set mouse format。这对canvas终端不起作用,可能是一个错误。

  2. gnuplot创建图像后,轴tics仅变为线条,即缩放时不再生成轴tics。尝试例如放大抽搐:这将变得非常大。

  3. 与2相同:screen坐标仅在gnuplot中被识别。写入文件后,只有绝对坐标。如果标签坐标落入缩放区域,则绘制相应的标签,否则不绘制。

  4. 这可能是一个错误,也可以在例如http://gnuplot.sourceforge.net/demo_canvas_5.0/finance.html

  5. 我认为1.和4.可能是错误,2。和3.是当前提供的交互性的限制,并且可能还有gnuplot的限制,以产生这样的图像。

    也许值得你测试gnuplot-JShttp://gnuplot.respawned.com/演示)。我还没有尝试过。