2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Как нарисовать круг в gnuplot
Сообщение02.11.2018, 19:12 
Аватара пользователя


17/03/17
683
Львів
Здравствуйте.
Gnuplot, version 4.6 patchlevel 4.

Двумерный график. Нужно нарисовать (или добавить как объект) круг (это должна быть поверхность Земли). Кроме круга у меня ещё строится график по данным файла (траектория тела брошенного с Земли под углом к касательной к Земли в точке бросания).
1) Пробовал добавить:

Используется синтаксис Gnuplot
set parametric

Не работает.
2) Пробовал нарисовать круг двумя кусками: $y_1=\sqrt{a^2-x^2}$, $y_2=-\sqrt{a^2-x^2}$. Но получается разорванный круг в двух местах в окрестности оси абсцисс.
3) Пробовал добавить круг как объект. Нашёл в справке:

Используется синтаксис Gnuplot
set object <index> circle {at|center} <position> size <radius>
         {arc [<begin>:<end>]}
         {<other-object-properties>}

Но не понял, что за <index> и т. д. Нашёл какие-то примеры в интернете, не работает.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 00:22 


09/05/16
138
misha.physics в сообщении #1351221 писал(а):
Кроме круга у меня ещё строится график по данным файла


В файле данные в каких координатах?

misha.physics в сообщении #1351221 писал(а):
1) Пробовал добавить:
Используется синтаксис Gnuplot
set parametric

Не работает.


Как именно не работает? Набор команд:

Используется синтаксис Gnuplot
set parametric
plot sin(t), cos(t), 'file.txt'


рисует круг и данные из файла с двумя колонками, соответствующими абсциссе и ординате. Домножая и прибавляя константу к $\sin(t)$ и $\cos(t)$, можно менять масштаб и передвигать окружность.

misha.physics в сообщении #1351221 писал(а):
2) Пробовал нарисовать круг двумя кусками: $y_1=\sqrt{a^2-x^2}$, $y_2=-\sqrt{a^2-x^2}$. Но получается разорванный круг в двух местах в окрестности оси абсцисс.


Да, в этом случае половинкам окружности придётся вручную выставить одинаковые linestyle:
Используется синтаксис Gnuplot
plot sqrt(1-x**2), -sqrt(1-x**2) lc 1



misha.physics в сообщении #1351221 писал(а):
Используется синтаксис Gnuplot
set object <index> circle {at|center} <position> size <radius>
         {arc [<begin>:<end>]}
         {<other-object-properties>}

Но не понял, что за <index> и т. д. Нашёл какие-то примеры в интернете, не работает.

Как именно не работает? index - произвольное целое число, по которому потом можно будет снова обратиться к этому объекту (окружности), чтобы, например, её стереть при помощи unset object. Так что набор команд
Используется синтаксис Gnuplot
set object 1 circle center 0,0 size 1
plot 'file.txt'
 

нарисует окружность с центром в начале координат и радиусом 1, а затем нарисует точки из текстового файла с двумя колонками.

Одна проблема: свои команды я проверял на Gnuplot version 5.0 patchlevel 5.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 01:04 
Заслуженный участник


09/05/12
25179
Можно просто что-нибудь вроде
Код:
set polar
plot 3

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 01:41 
Аватара пользователя


17/03/17
683
Львів
aitap, спасибо за ответ, спасибо за примеры!
aitap в сообщении #1351261 писал(а):
В файле данные в каких координатах?

В декартовых, $x$ и $y$ -- координаты тела на плоскости.
aitap в сообщении #1351261 писал(а):
Набор команд...рисует круг и данные из файла с двумя колонками, соответствующими абсциссе и ординате.

Уже работает, спасибо! Похоже, я радиус круга на три порядка ниже указал (перепутал метры с километрами :facepalm:, вот и получал точку вместо окружности ).
aitap в сообщении #1351261 писал(а):
Да, в этом случае половинкам окружности придётся вручную выставить одинаковые linestyle:

Я имел ввиду не цвет кривой, а это:
Изображение
aitap в сообщении #1351261 писал(а):
index - произвольное целое число, по которому потом можно будет снова обратиться к этому объекту (окружности)

Удивительно, работает. Я просто не знал, что вместо <index> писать. Писал букву, писал цифру -- gnuplot не понимал что это.

Pphantom,
Pphantom в сообщении #1351272 писал(а):
Можно просто что-нибудь вроде...

Так что-то страшное рисует, наверное потому, что данные из файла у меня в декартовых координатах.


В общем, получилось, весь код:
Используется синтаксис Gnuplot
#!/usr/bin/gnuplot
set parametric
set size square
set xrange [-14000000:14000000]
set yrange [-14000000:14000000]
plot [0:2*pi] 6371000*sin(t), 6371000*cos(t), "p.txt" using 2:3 w l
pause -1
 

Рисует:
Изображение

Задача была, упадет ли тело, брошенное с Земли под углом 45 градусов со скоростью между первой и второй космической.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 01:52 
Заслуженный участник


09/05/12
25179
misha.physics в сообщении #1351281 писал(а):
Так что-то страшное рисует, наверное потому, что данные из файла у меня в декартовых координатах.
Да, конечно. При этом все переводится в полярные координаты, данные, соответственно, надо сделать такими же.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 17:06 
Аватара пользователя


17/03/17
683
Львів
Pphantom,
интересно, а можно ли нарисовать на одном графике две кривые, но первую задать как функцию $y=f(x)$, а другую параметрически $x=x(t), y=y(t)$, при этом оси будут $x$ и $y$? То есть, сделать так, чтобы команда set parametric относилась только ко 2-ой кривой. Как-то так.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 17:17 
Заслуженный участник


09/05/12
25179
Есть стандартный режим для подобного, который включается командой set multiplot, с ним можно. Правда, надо будет всегда явно выставлять границы по обоим координатам (x и y), иначе оси будут рисоваться для каждой картинки отдельно и получится каша.

 Профиль  
                  
 
 Re: Как нарисовать круг в gnuplot
Сообщение03.11.2018, 20:55 
Аватара пользователя


17/03/17
683
Львів
Pphantom,
я понял, спасибо, нужно будет почитать об этом режиме.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group