Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Gnuplot画布:缩放时tics消失_Javascript_Html_Canvas_Gnuplot - Fatal编程技术网

Javascript Gnuplot画布:缩放时tics消失

Javascript Gnuplot画布:缩放时tics消失,javascript,html,canvas,gnuplot,Javascript,Html,Canvas,Gnuplot,我已经在一个与我的工作相关的web界面上工作了一段时间。我有一些数据可以迭代地与模型匹配。在每次迭代中,我都会创建一个在线的Gnuplot图来帮助我跟踪这个过程。它工作得很好,但是,我有一些与画布终端相关的小问题,我很长一段时间都无法修复。我使用Gnuplot 4.6.5和一些浏览器。他们行为一致 以下是此类页面的一个示例,带有两个图: 我对x轴的抖动和分辨率有一番挣扎,我认为这些问题可能与此有关: 1-图下方的x轴坐标不显示小数。我认为x坐标被Gnuplot截断了 当我们放大时,2轴抽搐消失

我已经在一个与我的工作相关的web界面上工作了一段时间。我有一些数据可以迭代地与模型匹配。在每次迭代中,我都会创建一个在线的Gnuplot图来帮助我跟踪这个过程。它工作得很好,但是,我有一些与画布终端相关的小问题,我很长一段时间都无法修复。我使用Gnuplot 4.6.5和一些浏览器。他们行为一致

以下是此类页面的一个示例,带有两个图:

我对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 ... "
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);
  }
我想知道这些不便是否有一个通用的解决办法

问题4: Gnuplot生成的javascript如下所示:

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 ... "
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.zoomed
gnuplot.zoom\u in\u progress
变量似乎与缩放级别的重新初始化有关

  • 如果您指的是鼠标盒的坐标:例如,
    wxt
    这些鼠标坐标的格式可与
    set mouse format
    相适应。这不适用于
    画布
    终端,可能是一个bug

  • gnuplot
    创建图像后,轴tic仅成为直线,即缩放时不会重新生成轴tic。试着放大一个tic:它会变得非常大

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

  • 这可能是一个bug,也可以在例如

  • 我认为1。四,。可能是虫子,2。三,。是当前提供的交互性的限制,可能也是gnuplot在生成此类图像方面的限制

    也许它值得你测试(演示在)。我还没有试过。

    我认为1是个bug。我在某个地方读到,Gnuplot使用轴的对数,当它转换回来时,数字可能会丢失。但我没有找到解决方案或补丁。在我找到时间理解您建议的gnuplotjs之前,我可能需要处理其余的问题。看起来很有希望,谢谢!