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, Супермодераторы



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

Сейчас этот форум просматривают: DariaRychenkova


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

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