Не могу найти терминал QN или X11 с CATALINA - PullRequest
1 голос
/ 23 марта 2020

Я установил gnuplot на свой Macbook с Каталиной 10.15.13. Когда я использую его в Xcode, он ничего мне не показывает, он выдает

ПРЕДУПРЕЖДЕНИЕ: прокладка с неизвестным терминалом.

Выходные данные не будут генерироваться. Пожалуйста, выберите терминал с помощью «установить терминал».

Сказав это, я увидел, что для отображения данных мне потребуются терминалы qt или x11, которых у меня нет. Вопросов два:

  1. Как их установить? homebrew не позволяет мне использовать brew "install gnuplot --with-x11"

  2. Чтобы увидеть данные, нужен ли мне эти два терминала? Не могу ли я использовать другой?

То, что меня просят сделать, - это вызвать 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;

}

1 Ответ

0 голосов
/ 24 марта 2020

Я попробовал следующее на macOS 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)

enter image description here


Я не понимаю, как вы используете gnuplot. AFAIK, вы можете выполнить любое из следующих действий:

Метод 1

Просто введите gnuplot в Терминале, и вы получите сообщения, показанные выше, и приглашение gnuplot>. Затем вы набираете свои команды печати и набираете quit, когда вы закончите.

Метод 2

Введите ваши команды печати непосредственно после команды gnuplot, например:

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

Метод 3

Поместите свои команды построения в скрипт с именем plot.cmds, например:

plot sin(x)

Затем скажите gnuplot чтобы запустить этот скрипт:

gnuplot -p -c plot.cmds

Ключевые слова : macOS, Catalina, gnuplot, Qt, GNUTERM

...