找不到带有 CATALINA 的 qt 或 x11 终端 gnuplot

Posted

技术标签:

【中文标题】找不到带有 CATALINA 的 qt 或 x11 终端 gnuplot【英文标题】:Can't find qt or x11 terminal gnuplot with CATALINA 【发布时间】:2020-03-23 20:06:15 【问题描述】:

我在装有 Catalina 10.15.13 的 Macbook 上安装了 gnuplot。当我在 Xcode 中使用它时,它没有显示任何东西,它提供了

警告:使用“未知”终端进行绘图。

不会产生任何输出。请选择带有“设置终端”的终端。

话虽如此,我看到要绘制我没有的终端 qt 或 x11 所需的数据。问题有两个:

    如何安装它们?自制软件不允许我使用 brew "install gnuplot --with-x11"

    为了查看数据,我需要这两个终端吗?我不能用另一个吗?

我被要求做的是在我的程序中调用 gnuplot,而不是从终端控制它。它可以工作,但它不会保持打开图表的窗口。在 utils.h 里面有一些函数和结构实例,但它与 gnuplot 无关。 我的代码是:

#include "utils.h"
#include <stdio.h>


char* commandsForGnuplot[] = 
"set style increment default",
"set title 'Simple Plots'",
"set title  font ',20' norotate",
"set xrange[*:*] noreverse writeback",
"set x2range[*:*] noreverse writeback",
"set yrange[*:*] noreverse writeback",
"set y2range[*:*] noreverse writeback",
"set zrange[*:*] noreverse writeback",
"set cbrange[*:*] noreverse writeback",
"set rrange[*:*] noreverse writeback",
"plot[-pi / 2:pi] cos(x), -(sin(x) > sin(x + 1) ? sin(x) : sin(x + 1))"
;



int main(int argc, const char * argv[]) 
   int n_commands = 11;

   if ( argc < 2 )  printf("Usage: %s -help for help\n", argv[0]); exit(1); 
   if ( VERBOSE >= 2 )  for (int a = 0; a < argc; a++) printf("%s ", argv[a]); printf("\n"); 

   instance inst;

  //////////////////////////////////////////////////////////
  // Parse the command line
  //////////////////////////////////////////////////////////
  parse_command_line(argc,argv, &inst);
    
  //printf(" file %s has %d non-empty lines\n", inst.input_file, number_of_nonempty_lines(inst.input_file)); exit(1);

  //////////////////////////////////////////////////////////
  // Parse the input file
  //////////////////////////////////////////////////////////
  read_input(&inst);
  //    if ( VRPopt(&inst) ) print_error(" error within VRPopt()");
  

  // debug print
  instance_tostring(&inst);
     
  FILE* gnuplotPipe = popen("/usr/local/bin/gnuplot", "w");
  if (!gnuplotPipe)  perror("popen gnuplot"); exit(EXIT_FAILURE); ;

  for (int i = 0; i < n_commands; i++)
  
      fprintf(gnuplotPipe, "%s \n", commandsForGnuplot[i]);
      printf("%s \n", commandsForGnuplot[i]);
  
  pclose(gnuplotPipe);
  
  return 0;

【问题讨论】:

可能相关:***.com/questions/32086405/… 【参考方案1】:

我在 ma​​cOS Catalina 上尝试了以下操作,效果很好:

# Remove existing stuff to be sure my technique really works!
brew rm qt gnuplot

# Install qt and gnuplot afresh
brew install qt gnuplot

然后,在终端中,或者最好在您的登录脚本中,以便在您每次登录时设置:

export GNUTERM=qt

现在你可以使用gnuplot

gnuplot

G N U P L O T
Version 5.2 patchlevel 8    last modified 2019-12-01 

Copyright (C) 1986-1993, 1998, 2004, 2007-2019
Thomas Williams, Colin Kelley and many others

gnuplot home:     http://www.gnuplot.info
faq, bugs, etc:   type "help FAQ"
immediate help:   type "help"  (plot window: hit 'h')

Terminal type is now 'qt'
Options are '0 font "Sans,9"'

gnuplot> plot sin(x)


我不明白你是如何使用gnuplot 的。 AFAIK,您可以执行以下任何操作:

方法一

只需在终端中输入gnuplot,您将收到如上所示的消息和提示gnuplot&gt;。然后输入绘图命令并在完成后输入quit

方法二

gnuplot 命令之后直接键入您的绘图命令,如下所示:

gnuplot -p -e "plot sin(x)"

方法3

将您的绘图命令放入名为plot.cmds 的脚本中,如下所示:

plot sin(x)

然后告诉gnuplot 运行该脚本:

gnuplot -p -c plot.cmds

关键字:macOS、Catalina、gnuplot、Qt、GNUTERM

【讨论】:

我应该在哪里使用“export GNUTERM=qt”? 是的,这会起作用,但在使用gnuplot之前,您必须在每次登录时再次执行此操作@ 我想你想坚持这个情节,像这样gnuplot -p -e "plot sin(x)"或者,如果你有一个脚本文件gnuplot -p -c plot.cmds 我已经更新了我的答案以尝试澄清事情 - 所以请再次阅读。如果您以其他方式使用gnuplot,请在您自己的原始问题下单击edit,并显示您正在尝试做什么。谢谢。 试试popen("/usr/local/bin/gnuplot -p"

以上是关于找不到带有 CATALINA 的 qt 或 x11 终端 gnuplot的主要内容,如果未能解决你的问题,请参考以下文章

tomcat单独启动成功, eclipse启动tomcat报错, 错误一:找不到或无法加载主类 org.apache.catalina.startup.Bootstrap;错误二:端口被占用

在 QT-creator 中找不到 phoneGap 文件

QT 和 Boost:找不到 -llibboost_filesystem

idea启动tomcat报错,找不到catalina.bat文件

Qt Creator 找不到任何有效的 Qt 版本

Qt QWebEngineView在发布但在调试中找不到javascript文件