<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.sternwarte.uni-erlangen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Obst</id>
	<title>Remeis-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.sternwarte.uni-erlangen.de/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Obst"/>
	<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php/Special:Contributions/Obst"/>
	<updated>2026-05-24T18:48:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Main_Page&amp;diff=1813</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Main_Page&amp;diff=1813"/>
		<updated>2019-02-20T08:29:00Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Welcome to the Wiki of the Dr. Karl Remeis Observatory ==&lt;br /&gt;
&lt;br /&gt;
This is our new wiki. Please use the '''Search Remeis-Wiki box''' on the upper right corner to search for the page or information you are looking for. You may '''browse the content''' of the wiki using the [[Contents| Contents]] link in the menu on the left.&lt;br /&gt;
&lt;br /&gt;
In order to edit or create new pages you have to '''log in''' using the same username and password than for the Remeis machines. In case you are a former or external member please choose the corresponding domain additionally. Please visit the [[Help:How_to| How to]] page before you start editing the wiki! For trial reasons, use the [[sandbox|sandbox]].&lt;br /&gt;
&lt;br /&gt;
If you have questions or suggestions, please feel free to talk to Andrea, Jakob or Maria&lt;br /&gt;
&lt;br /&gt;
Note: You can find the old wiki at [http://www.sternwarte.uni-erlangen.de/old/wiki http://www.sternwarte.uni-erlangen.de/old/wiki], but editing has been disabled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New here? ==&lt;br /&gt;
&lt;br /&gt;
You are new at Remeis? Have a look at the following pages:&lt;br /&gt;
&lt;br /&gt;
[[How_to_use_the_Remeis_cluster| How to use the Remeis cluster]]&lt;br /&gt;
&lt;br /&gt;
[[Common_Practices_at_Remeis| Common Pratices at Remeis]]&lt;br /&gt;
&lt;br /&gt;
[[:Category:Current_Members| Other pages listed here for general information]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=How_to_use_the_Remeis_cluster&amp;diff=1812</id>
		<title>How to use the Remeis cluster</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=How_to_use_the_Remeis_cluster&amp;diff=1812"/>
		<updated>2019-02-20T08:22:27Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How To use the Remeis Cluster ==&lt;br /&gt;
&lt;br /&gt;
The Cluster of the Remeis obsveratory is designed to make all ressources available for easy usage. Nevertheless, there are a few important things one has to know in order to use the cluster properly. In the following the most important information will be listed. Other questions or problems with the system or software sould be directed to [mailto:admin@sternwarte.uni-erlangen.de admin@sternwarte.uni-erlangen.de].&lt;br /&gt;
&lt;br /&gt;
=== Performing Computations  ===&lt;br /&gt;
&lt;br /&gt;
* The servers ''crux'', ''grus'', and ''phoenix'' should not be used for computations at all.&lt;br /&gt;
* Computations and extractions on the Cluster should be submitted via '''torque'''. Information on how to use it can be found [[Torque|here]].&lt;br /&gt;
* Also [[Torque#Interactive_Jobs|interactive sessions]] can be started via '''torque'''.&lt;br /&gt;
&lt;br /&gt;
===  The Data-Storage System ===&lt;br /&gt;
&lt;br /&gt;
* '''/userdata:''' Extracted data like images or spectra or other space consuming stuff or stuff which can re recreated/downloaded again should be put there. /userdata is a RAID6 system, i.e. two disks can fail simultaneously w/o data loss --&amp;gt; your data is safe on /userdata! However, there is NO backup of userdata, as /userdata is too big to be backuped simply. And there is no quota on /userdata.&lt;br /&gt;
&lt;br /&gt;
* '''/home:''' This is the place for self-developped software, scripts, documents, TeX files, diploma/phd/... theses, papers, spreadsheets, etc. /home is also a RAID system, i.e. more than one disk may fail w/o data loss. Furthermore, /home is backedup every night to TWO different disks (in two machines) AND once a week on an external disk that is stored outside the observatory  for the worst case (fire etc). It therefore does not make sense to create your own private backups on local scratch disks etc. /home, however, is quite small (1 TB for all the institute); we therefore have a quota of about 10GB per user. It is no problem to get more space, if you can't move stuff around anymore, just drop an Email to the admins. On the other hand, you don't have to fill your quota completely! To check your quota you can use the ''quota'' command on crux, like &lt;br /&gt;
  ssh crux quota -s -f /home&lt;br /&gt;
&lt;br /&gt;
* '''/scratch:''' For temporary or otherwise not very important data. You should not store anything important on /scratch!! The scratch disks are NOT backedup and the scratch disks are not fail safe, i.e. if a scratch disk is broken (which happens regularly), your data is GONE.&lt;br /&gt;
&lt;br /&gt;
* '''Satellite Data:''' We already have archives for most satellite raw data (applies mostly to the X-ray people). So please do not download any raw data yourself, but talk to the person in charge of a specific mission. You can find out who is responsible by executing &amp;lt;code&amp;gt;showSatelliteContacts&amp;lt;/code&amp;gt; in the shell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Logging into Remeis ===&lt;br /&gt;
&lt;br /&gt;
====  Remote Login ====&lt;br /&gt;
&lt;br /&gt;
===== Using ssh =====&lt;br /&gt;
You can log-in via ssh simply by &lt;br /&gt;
  ssh -X &amp;lt;username&amp;gt;@&amp;lt;host&amp;gt;.sternwarte.uni-erlangen.de&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Using the NX-Client =====&lt;br /&gt;
&lt;br /&gt;
If you need a graphics interface, it might be worth to use the &amp;lt;code&amp;gt;nxclient&amp;lt;/code&amp;gt; to connect to the Remeis Cluster. The corresponding &amp;lt;code&amp;gt;nxserver&amp;lt;/code&amp;gt; is installed on (almost) all machines. In order to use it you have to [http://www.nomachine.com/download.php download] it and follow the Connection-Wizard to connect on a host. Always use the same machine, as only a limited number of total connections is allowed on each machine. This works for Linux, Mac OSX, and even Windows. &lt;br /&gt;
&lt;br /&gt;
===== Hosts =====&lt;br /&gt;
Host names are generally the constellation names, e.g., &amp;lt;code&amp;gt;norma&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;leo&amp;lt;/code&amp;gt;. All available hosts can be found in the shell variable &amp;lt;code&amp;gt;$RemeisHosts&amp;lt;/code&amp;gt;. The servers (&amp;lt;code&amp;gt;crux&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;grus&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;phoenix&amp;lt;/code&amp;gt;) should not be used.&lt;br /&gt;
&lt;br /&gt;
==== Connecting without password and short hostnames ====&lt;br /&gt;
&lt;br /&gt;
Sick of always typing &amp;lt;code&amp;gt;user@myfavouritehost.sternwarte.uni-erlangen.de&amp;lt;/code&amp;gt; and always having to enter your password when switching machines inside inside the Remeis Cluster? The follwing setup will make your life easier.&lt;br /&gt;
&lt;br /&gt;
===== Config-File =====&lt;br /&gt;
&lt;br /&gt;
In the file &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; you can set up the configuration for ssh. A few things are really useful.&lt;br /&gt;
   # activate compression, might lead to a faster connection&lt;br /&gt;
   Compression yes&lt;br /&gt;
   # do X11 forwarding by default, i.e., the option &amp;quot;-X&amp;quot; is &lt;br /&gt;
   # always set when using &amp;quot;ssh&amp;quot;&lt;br /&gt;
   forwardX11 yes&lt;br /&gt;
   &lt;br /&gt;
In order to define a short-cut for a host, you have to add the following information to the ''~/.ssh/config''&lt;br /&gt;
   # the short-name you want to call the  host (most useful is the general name of the machine&lt;br /&gt;
   Host=pulsar&lt;br /&gt;
   # now define user and host such that ''&amp;lt;User&amp;gt;@&amp;lt;Hostname&amp;gt;'' is the correct adress&lt;br /&gt;
   Hostname=pulsar.sternwarte.uni-erlangen.de&lt;br /&gt;
   User=YourUsername&lt;br /&gt;
   &lt;br /&gt;
===== ssh-keys =====&lt;br /&gt;
   &lt;br /&gt;
If you setup the ssh-keys properly, you can login via ssh without entering a password. This isn't only nice to have, but if you use [[torque:start|Torque]], this is mandatory. A detailed description can be found [[SSH-Keys|here]].&lt;br /&gt;
&lt;br /&gt;
=== Setting the Default Options/Software ===&lt;br /&gt;
&lt;br /&gt;
Each new account is equipped with a sample file at ''~/.cshrc'', which is loaded on every start of the terminal. Hence, this defines your options, i.e., the software available, short-cuts, your favourite editor, and so on. Commonly useful options are activated by default. In addition, there are a few additional features, which are commented out by default but still very useful for most users.&lt;br /&gt;
&lt;br /&gt;
   # set your favourite text editor to be used by default; important, e.g., if you want to use GIT&lt;br /&gt;
   setenv EDITOR jed &lt;br /&gt;
   &lt;br /&gt;
   # activate the X-ray software (HEADAS, satellite extraction scripts, ...)&lt;br /&gt;
   source $SOFTDIR/softwarescript_Xray.csh &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More information on the TC shell and how to configure it can be found [[TcShell|here]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Current Members]][[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=General_organisation_of_the_lab&amp;diff=1804</id>
		<title>General organisation of the lab</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=General_organisation_of_the_lab&amp;diff=1804"/>
		<updated>2019-02-19T11:05:40Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Who is involved in which experiment? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:internal]]&lt;br /&gt;
This page is up to date for the Spring Lab 2019.&lt;br /&gt;
=== Who is involved in which experiment? ===&lt;br /&gt;
'''Azimuth''': Katya, Philipp (T.) &amp;lt;br/&amp;gt;&lt;br /&gt;
'''CCD''': Maria, Matthias, Dominic, Melanie, Katrin, Christian &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Error propagation''': Max, Basti &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Imaging''': Simon &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Observing''': David &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Radio''': Ralf, Jonathan, Jakob, Andrea &amp;lt;br/&amp;gt;&lt;br /&gt;
'''Spectroscopy''': Andreas &amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Labtable ===&lt;br /&gt;
This is the link to our labtable: https://www.sternwarte.uni-erlangen.de/internal-area/labtable/ &amp;lt;br/&amp;gt;&lt;br /&gt;
Please insert the dates of both experiment and final protocol as well as your scores in this table. You can also leave comments. &amp;lt;br/&amp;gt;&lt;br /&gt;
This link is a permanent link, so for simplicity you might want to save it as a bookmark in your favorite browser.&lt;br /&gt;
&lt;br /&gt;
=== Attendance ===&lt;br /&gt;
In order to have an overview of the individual attendances during the lab, there is a Doodle poll, where you have sign in for the days you will be at the observatory. At the days marked with 'yes', you are expected to be in Bamberg. &amp;lt;br/&amp;gt;&lt;br /&gt;
First block: &amp;lt;br/&amp;gt;&lt;br /&gt;
Second block: &amp;lt;br/&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Additionally, it is mandatory for everyone to help during the observing night(s) in the garden. In order to have enough people around and to distribute this task fairly, you need to sign into additional Doodle polls, whose outcome Ingo is using to create a list containing the night shifts for everyone. &amp;lt;br/&amp;gt;&lt;br /&gt;
The decision whether observing is planned for that night will be made until 5 pm by the profs. &amp;lt;br/&amp;gt;&lt;br /&gt;
Night Doodle first block: &amp;lt;br/&amp;gt;&lt;br /&gt;
Night Doodle second block: &amp;lt;br/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=GIT_--_The_Fast_Version_Control_System&amp;diff=1643</id>
		<title>GIT -- The Fast Version Control System</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=GIT_--_The_Fast_Version_Control_System&amp;diff=1643"/>
		<updated>2018-07-18T11:31:17Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= What is a GIT Repository? (by Matthias Kühnel) =&lt;br /&gt;
&lt;br /&gt;
''A repository is a container for project files and a program, in this case 'git', handles the different versions of the files and takes care about merging of different file versions. That means many persons can work on the same project (or more precisely on the same files) simultaneously without taking care about the modifications of the other editors. So in principle each editor 'clones' the repository to his or her local computer, does some modifications and at last 'pushes' these changes back into the repository.''&lt;br /&gt;
&lt;br /&gt;
= Clone existing repositories and add changes =&lt;br /&gt;
&lt;br /&gt;
=== Get repository clone ===&lt;br /&gt;
&lt;br /&gt;
==== git clone ====&lt;br /&gt;
&lt;br /&gt;
If you want to use or contribute to a repository, you will first have to get a&lt;br /&gt;
full copy of it (called a &amp;quot;clone&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone git@serpens.sternwarte.uni-erlangen.de:&amp;lt;group&amp;gt;/&amp;lt;repository&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;tt&amp;gt;&amp;lt;group&amp;gt;&amp;lt;/tt&amp;gt; is the group the &amp;lt;tt&amp;gt;&amp;lt;repository&amp;gt;&amp;lt;/tt&amp;gt; belongs to&lt;br /&gt;
&amp;lt;ref&amp;gt;other repositories are distributed in the file system and can be obtained&lt;br /&gt;
via &amp;lt;code&amp;gt;git clone ssh://&amp;lt;user&amp;gt;@crux.sternwarte.uni-erlangen.de:/path/to/repo&lt;br /&gt;
&amp;lt;/code&amp;gt;(always use this over &amp;lt;code&amp;gt;file://...&amp;lt;/code&amp;gt; !)&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Add changes to the repository ===&lt;br /&gt;
&lt;br /&gt;
Before changing anything in the new clone it is good practice&amp;lt;ref&amp;gt;it might be&lt;br /&gt;
necessary if the repo is located under gitlab&amp;lt;/ref&amp;gt; to work on a new branch.&lt;br /&gt;
&lt;br /&gt;
==== git checkout ====&lt;br /&gt;
&lt;br /&gt;
To create a new branch and change to it, use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git checkout -b &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Choose a representative branch name for the feature you want to add or change!&lt;br /&gt;
&lt;br /&gt;
==== git add / git commit====&lt;br /&gt;
&lt;br /&gt;
In this fresh and new branch you can freely change anything you like. Keep your&lt;br /&gt;
changes logically together and add/commit every time you start working on a new&lt;br /&gt;
feature.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git add &amp;lt;filename1&amp;gt; &amp;lt;filename2&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
adds all named files to the staging area. &amp;lt;code&amp;gt;git status&amp;lt;/code&amp;gt; might prove&lt;br /&gt;
useful as it will list all untracked changes.&lt;br /&gt;
&lt;br /&gt;
When you have staged all necessary files, use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git commit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to apply your changes locally. (This will ask you for a commit message. See&lt;br /&gt;
[[GIT -- The Fast Version Control System#Good commit practice|here]] for examples on how to explain what you did).&lt;br /&gt;
&lt;br /&gt;
==== git push ====&lt;br /&gt;
&lt;br /&gt;
With&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin &amp;lt;branch-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
your changes will be added to the global repository (in the new branch).&lt;br /&gt;
If the repository is located under gitlab and you want to provide your code&lt;br /&gt;
for everyone it is probably necessary to send a merge request. (See&lt;br /&gt;
[[GIT -- The Fast Version Control System#Merge request|here]] for more details)&amp;lt;ref&amp;gt;In smaller projects it might&lt;br /&gt;
be sufficient to directly push to the master branch&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==== git merge ====&lt;br /&gt;
&lt;br /&gt;
To combine (merge) the branch ''feature'' with branch ''master'' of the&lt;br /&gt;
same repository it is sufficient to call&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git fetch origin&lt;br /&gt;
git checkout master&lt;br /&gt;
git merge feature&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and probably also&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git branch -d feature&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to delete the branch in your local repository and/or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git push origin :feature&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to delete the ''feature'' branch on the remote repository&lt;br /&gt;
&lt;br /&gt;
= Create your own repository =&lt;br /&gt;
&lt;br /&gt;
The most easy way to create a new repository (empty or from existing code)&lt;br /&gt;
is to use the [http://www.sternwarte.uni-erlangen.de/gitlab gitlab] interface.&lt;br /&gt;
Here you will also find first steps you want to do before start working.&lt;br /&gt;
&lt;br /&gt;
However, if you do not want to use gitlab you can call&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git init --bare --shared&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in an empty folder. This, obviously empty, repository can then get pulled with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git sh://&amp;lt;user&amp;gt;@curx.sternwarte.uni-erlangen.de:/path/to/folder&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and following the steps to&lt;br /&gt;
[[GIT -- The Fast Version Control System#Clone existing repositories and add changes|clone a repository]] and add&lt;br /&gt;
files.&lt;br /&gt;
&lt;br /&gt;
==== Gitignore ====&lt;br /&gt;
&lt;br /&gt;
For many projects (especially latex) it is very convenient to prevent you and&lt;br /&gt;
others from adding temporary or unnecessary files. This can be done by creating&lt;br /&gt;
a file called &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; in the root of the directory.&lt;br /&gt;
&lt;br /&gt;
Example contents of &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; for a latex project:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# git ignore file for TeX files&lt;br /&gt;
#&lt;br /&gt;
*~&lt;br /&gt;
*.aux&lt;br /&gt;
*.log&lt;br /&gt;
*.bbl&lt;br /&gt;
*.blg&lt;br /&gt;
*.bak&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example no file ending in &amp;lt;code&amp;gt;~, .aux, .log, .bbl, .blg,&amp;lt;/code&amp;gt; or&lt;br /&gt;
&amp;lt;code&amp;gt;.bak&amp;lt;/code&amp;gt; can get pushed to the repository.&lt;br /&gt;
Be aware that &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; only prevents files from getting pushed.&lt;br /&gt;
It does not affect files that are already part of the repository. So every file&lt;br /&gt;
that is added before the &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; was added must be explicitly&lt;br /&gt;
removed with &amp;lt;code&amp;gt;git rm &amp;lt;filename1&amp;gt; &amp;lt;filename2&amp;gt; ...&amp;lt;/code&amp;gt; (also &amp;lt;code&amp;gt;git&lt;br /&gt;
push origin master&amp;lt;/code&amp;gt; to apply it to the remote repository).&lt;br /&gt;
&lt;br /&gt;
= Configure git =&lt;br /&gt;
&lt;br /&gt;
Every time you commit changes to a repository your message is appended with&lt;br /&gt;
your name and mail address. If you have not specified a name and/or a mail&lt;br /&gt;
address you can do this (globally) with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git config --global user.name &amp;quot;John Doe&amp;quot;&lt;br /&gt;
git config --global user.email johndoe@example.com&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will also overwrite existing entries, in case your mail address has&lt;br /&gt;
changed.&lt;br /&gt;
&lt;br /&gt;
= Gitlab =&lt;br /&gt;
&lt;br /&gt;
The gitlab interface provides a powerful overview of all projects you are&lt;br /&gt;
involved in. Also it gives you hints about what you should do with a fresh&lt;br /&gt;
repository.&lt;br /&gt;
&lt;br /&gt;
To create a new repository you first have to log in at &lt;br /&gt;
[http://www.sternwarte.uni-erlangen.de/gitlab www.sternwarte.uni-erlangen.de/gitlab]&lt;br /&gt;
&lt;br /&gt;
For creating the new repository just click on the &amp;quot;new project&amp;quot; button.&lt;br /&gt;
Following the steps you will end up with a fresh repository.&lt;br /&gt;
&lt;br /&gt;
=== Good commit practice ===&lt;br /&gt;
&lt;br /&gt;
When you contribute to a repository there are a few rules for best practice&lt;br /&gt;
which make life much more easier:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
  every time you work on a new (or old) feature&lt;br /&gt;
  do your changes in a new branch with a meaningful name.&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
  commit frequently and each time for separate changes/features that are not related to&lt;br /&gt;
  each other&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
  commit messages should start with a &amp;lt;50 character summary in&lt;br /&gt;
  ''imperative mode''. This is a headline! Capitalize the first word and no periods. &lt;br /&gt;
  A more complete description of what you did, where, and how, may follow&lt;br /&gt;
  '''after''' a blank line.&lt;br /&gt;
  Example commit message:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Add awesome_feature&lt;br /&gt;
  &lt;br /&gt;
This adds the awesome feature to foo by using the functionality&lt;br /&gt;
bar. foo may now be unstable when used with out of range values.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
Although this message is very generic here, notice the ~80 character&lt;br /&gt;
line break for better appearance.&lt;br /&gt;
  &lt;br /&gt;
In general try to complete the following sentence with your summary:&lt;br /&gt;
&amp;quot;With this commit you &amp;lt;insert summary here&amp;gt;&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
In the description explain why you did something, how did you accomplish it&lt;br /&gt;
and what are the consequences.&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
Further information about good commit practice can be found on &lt;br /&gt;
[https://chris.beams.io/posts/git-commit/ this web page].&lt;br /&gt;
&lt;br /&gt;
=== Merge request ===&lt;br /&gt;
&lt;br /&gt;
When you work on a repository located on gitlab, it might be necessary to fill&lt;br /&gt;
a merge request. A merge request informs the maintainers of the repository that&lt;br /&gt;
a new feature is available and ready for publication.&lt;br /&gt;
&lt;br /&gt;
The easiest way to send a merge request is to follow the link that is given in your&lt;br /&gt;
command line when you've pushed your branch.&lt;br /&gt;
&lt;br /&gt;
On this page just select one maintainer to send the request to and check the mark for&lt;br /&gt;
&amp;quot;delete branch after merge&amp;quot;. You are not forced to delete your branch, but it is very&lt;br /&gt;
good practice. Under normal conditions when you will work any further on the same feature&lt;br /&gt;
(e.g., bug fixing) just checkout a new branch instead of keeping old ones. This will just&lt;br /&gt;
lead to an unnecessary amount of dead branches. &lt;br /&gt;
&lt;br /&gt;
= Usefull git commands =&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| git log || list log overview&lt;br /&gt;
|-&lt;br /&gt;
| git log --stat || list commits with stats&lt;br /&gt;
|-&lt;br /&gt;
| git log --oneline || display only first line of commit messages&lt;br /&gt;
|-&lt;br /&gt;
| git branch || list local branches&lt;br /&gt;
|-&lt;br /&gt;
| git branch -v || list local branches with more information&lt;br /&gt;
|-&lt;br /&gt;
| git branch -d &amp;lt;branch-name&amp;gt; || delete branch &amp;lt;branch-name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| git branch &amp;lt;branch-name&amp;gt; || add branch &amp;lt;branch-name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| git remote || list repository urls&lt;br /&gt;
|-&lt;br /&gt;
| git remote rename &amp;lt;old&amp;gt; &amp;lt;new&amp;gt; || rename &amp;lt;old&amp;gt; url to &amp;lt;new&amp;gt; url&lt;br /&gt;
|-&lt;br /&gt;
| git remote add &amp;lt;url-name&amp;gt; &amp;lt;address&amp;gt; || add new remote address under &amp;lt;url-name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| git push &amp;lt;url-name&amp;gt; &amp;lt;branch-name&amp;gt; || push &amp;lt;branch-name&amp;gt; to &amp;lt;url-name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| git push &amp;lt;url-name&amp;gt; :&amp;lt;branch-name&amp;gt; || delete &amp;lt;branch-name&amp;gt; from remote &amp;lt;url-name&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| git status || list untracked files/changes&lt;br /&gt;
|-&lt;br /&gt;
| git add &amp;lt;filename&amp;gt; || add &amp;lt;filename&amp;gt; to staging&lt;br /&gt;
|-&lt;br /&gt;
| git commit || commit staged changes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- add many more here --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information about the different tools of git can be found in the man page&lt;br /&gt;
&amp;lt;code&amp;gt;git &amp;lt;tool&amp;gt; --help&amp;lt;/code&amp;gt; or [https://git-scm.com/docs here].&lt;br /&gt;
&lt;br /&gt;
= git and latexdiff =&lt;br /&gt;
Find the version you want to compare your current document with via&lt;br /&gt;
&amp;lt;pre&amp;gt; git log &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
produce a pdf showing the differences between the two files via&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
latexdiff-vc --git --flatten -r long_weird_number_of_the_older_commit --pdf --disable-citation-markup file.tex&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No need to checkout the older version! See latexdiff documentation for further options.&lt;br /&gt;
&lt;br /&gt;
= Notes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- = Existing Repositories: How to clone and commit changes =&lt;br /&gt;
&lt;br /&gt;
''The following text is copied from an e-mail from Joern concerning the software scripts of the Remeis observatory. More information one these scripts can be found at [[Software at the Remeis-Observatory]].''&lt;br /&gt;
&lt;br /&gt;
== Get the files ==&lt;br /&gt;
&lt;br /&gt;
If you want to modify scripts, you will first have to get a full copy&lt;br /&gt;
of the repository (called a &amp;quot;clone&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
  git clone ssh://account@crux.sternwarte.uni-erlangen.de/data/git/aitlib&lt;br /&gt;
&lt;br /&gt;
(same for intscripts, xmmscripts, xtescripts, xspecscripts,&lt;br /&gt;
isisscripts, cyclo, fpipe) where account is your account at the&lt;br /&gt;
Sternwarte. &lt;br /&gt;
&lt;br /&gt;
Please use the above command EVEN IF YOU ARE WORKING locally in&lt;br /&gt;
Bamberg/Erlangen. Do NOT do a clone with the file://-syntax of git to&lt;br /&gt;
allow you to work on several machines (since the git push command will&lt;br /&gt;
not work properly). Just forget that file://... is an allowed git URL.&lt;br /&gt;
&lt;br /&gt;
== Committing your changes ==&lt;br /&gt;
&lt;br /&gt;
After doing the clone, edit the scripts and check them. In case you edit the isisscripts: Do not forget to &amp;lt;code&amp;gt;make&amp;lt;/code&amp;gt; the isisscripts, i.e. compile your changes into the overall &amp;lt;code&amp;gt;isisscripts.sl&amp;lt;/code&amp;gt; by typing&lt;br /&gt;
  make&lt;br /&gt;
in the &amp;lt;code&amp;gt;isisscripts/&amp;lt;/code&amp;gt; directory.  &lt;br /&gt;
You should usually do your changes in smallish steps, i.e., applying a few changes,&lt;br /&gt;
checking them, and then committing them to the repository as follows: &lt;br /&gt;
&lt;br /&gt;
  git commit filename&lt;br /&gt;
&lt;br /&gt;
OR&lt;br /&gt;
&lt;br /&gt;
  git commit -a &lt;br /&gt;
&lt;br /&gt;
(the last if you've made changes to many files). This command will ask&lt;br /&gt;
you to enter information for the change log.&lt;br /&gt;
&lt;br /&gt;
CONTRARY to CVS, a commit does not yet make your changes available to&lt;br /&gt;
others. This is advantageous, because it allows you to do commits&lt;br /&gt;
locally while you're developing a code, and then go back to an older&lt;br /&gt;
version once you realize that you've made a mistake. However, let's&lt;br /&gt;
assume that you've programmed something that is working and you want&lt;br /&gt;
to make it available to everybody. In this case, commit everything as&lt;br /&gt;
described above and then do a &lt;br /&gt;
&lt;br /&gt;
  git push&lt;br /&gt;
&lt;br /&gt;
(do NOT forget this last command).&lt;br /&gt;
&lt;br /&gt;
After you have committed and pushed your changes, WE STRONGLY&lt;br /&gt;
RECOMMEND THAT YOU REMOVE YOUR CLONED REPOSITORY (rm -r repo). The&lt;br /&gt;
reason is that experience shows that people often start working on&lt;br /&gt;
their &amp;quot;private&amp;quot; versions of the scripts and then either forget to&lt;br /&gt;
commit their changes (=nobody else gets access to them) OR they forget&lt;br /&gt;
to do regular updates of their local clones and then run into problems&lt;br /&gt;
that have already been fixed in the official repository. Access to the&lt;br /&gt;
current version of the scripts is better obtained using the approach&lt;br /&gt;
outlined below (and implemented on the Remeis machines, for example).&lt;br /&gt;
&lt;br /&gt;
== Other useful commands ==&lt;br /&gt;
* assuming you've already cloned the repository and you want to update it to the newest version, use &amp;lt;pre&amp;gt;git pull&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to obtain a change log of the repository &amp;lt;pre&amp;gt;git log&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* to obtain a change log for one file &amp;lt;pre&amp;gt;git log filename&amp;lt;/pre&amp;gt; (which will work pretty much for all files, but for some reason does not work for the intscripts; note that even for the intscripts the full change log is still available and you can still check out older versions of the script should you desire to do so)&lt;br /&gt;
&lt;br /&gt;
* to tag one of the commits with a tagname, e.g., to mark the submitted version of your paper as submitted, get the commit id from &amp;lt;code&amp;gt;git log&amp;lt;/code&amp;gt; and do &amp;lt;pre&amp;gt;git tag 'tagname' id&amp;lt;/pre&amp;gt; where tagname only needs quotes if it contains, e.g., spaces&lt;br /&gt;
&lt;br /&gt;
* to push the tag&amp;lt;pre&amp;gt;git push --tags&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* optimize the local git repository &amp;lt;pre&amp;gt;git gc --aggressive&amp;lt;/pre&amp;gt; this will optimize the tree of stored local changes, removing intermediate data that are not needed anymore. This makes your local repository dramatically faster and can save significant space. You should run this every now and then (on very active directories probably once a week). &lt;br /&gt;
  &lt;br /&gt;
* find out where the repository originally came from before it was cloned:&amp;lt;pre&amp;gt;git remote -v&amp;lt;/pre&amp;gt;or for a little more information&amp;lt;pre&amp;gt;git remote show origin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* showing the differences between the old and new file:&amp;lt;pre&amp;gt;diff -u new_file old_file&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Create your own repository =&lt;br /&gt;
&lt;br /&gt;
'' The following entry is from an email by Matthias Kühnel to Jieun (with additional comments added afterwards) and was intended to explain '''how to create a repository in order to edit a paper together using GIT'''.''&lt;br /&gt;
&lt;br /&gt;
Now we'll create a git-repository for your paper: in your Remeis home&lt;br /&gt;
directory create a directory where to store all your repositories in,&lt;br /&gt;
such as ~/git (at the moment we'll create only one ;-)). Create a&lt;br /&gt;
subdirectory for your paper in there, ~/git/choi2011a for example.&lt;br /&gt;
Change into that directory and create an empty repository by&lt;br /&gt;
   git init --bare --shared&lt;br /&gt;
You should get a message like &amp;quot;Initialized empty Git repository in&lt;br /&gt;
/home/choi/git/choi2011a/&amp;quot;. Add &amp;lt;code&amp;gt;--shared&amp;lt;/code&amp;gt; only if everyone in your group should be able to &lt;br /&gt;
commit changes.&lt;br /&gt;
All in all, this should create a structure of&lt;br /&gt;
files and subdirectories in your repository directory. Later your files&lt;br /&gt;
will be hidden somewhere in this structure (I'm not sure where to be&lt;br /&gt;
honest). The thing is that a bare repository only contains&lt;br /&gt;
modifications, that means no whole file, only different pieces depending&lt;br /&gt;
on the file version.&lt;br /&gt;
Now you have to modify the 'config' file of the repository (//note:// you should not need the following modifications if you initialized the repository with the &amp;lt;code&amp;gt;--shared&amp;lt;/code&amp;gt; option), for example&lt;br /&gt;
   /home/choi/git/choi2011a/config&lt;br /&gt;
The file should look like&amp;lt;pre&amp;gt;&lt;br /&gt;
   [core]&lt;br /&gt;
        repositoryformatversion = 0&lt;br /&gt;
        filemode = true&lt;br /&gt;
        bare = true&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your repository is now ready to be used, but empty. So let's add some&lt;br /&gt;
files into it!&lt;br /&gt;
&lt;br /&gt;
Create an empty directory somewhere that will contain your paper. We now clone your&lt;br /&gt;
(empty) repository into your source directory:&lt;br /&gt;
   git clone crux:/home/choi/git/choi2011a .&lt;br /&gt;
Note that we clone from machine &amp;lt;code&amp;gt;crux&amp;lt;/code&amp;gt;, even if we are working on that machine. This approach will make your life easier if you are working on multiple machines in the Remeis cluster. Do not forget the trailing dot!&lt;br /&gt;
&lt;br /&gt;
Now your directory is a clone of the repository. Copy all files and subdirectories that you would like to be part of the repository into the directory and then add these files to git&lt;br /&gt;
  git add filenames&lt;br /&gt;
where filenames can include (relative) paths to files somewhere in the directory tree of your repository.&lt;br /&gt;
&lt;br /&gt;
A general rule for tex repositories for papers is to only add the source code and&lt;br /&gt;
*no* compiled or auxiliary files. That means, just add the .tex file,&lt;br /&gt;
any used styles (.sty) and images (.pdf, .ps, .eps or whatever). If you have&lt;br /&gt;
also isis scripts (.sl) which creates some plots, you may add them also.&lt;br /&gt;
Once you have added all necessary files, you have to 'commit' the changes:&lt;br /&gt;
  git commit -a&lt;br /&gt;
Now your default editor should open automatically, where you have to&lt;br /&gt;
enter a comment describing the changes (attention: the default editor should be set first in the ~/.cshrc, see [[csh:start|TC shell]]). This&lt;br /&gt;
comment will be put into the log. The editor also shows a list of files&lt;br /&gt;
which will be added/modified/removed. Please note that this list is for&lt;br /&gt;
your information *only*. Any changes to the list have no effect!&lt;br /&gt;
After you have entered a comment, quick save the file (if you use jed&lt;br /&gt;
Ctrl-X-S) and exit the editor (Ctrl-X-C). You should see something like:&amp;lt;pre&amp;gt;&lt;br /&gt;
  [master 5e91497] your_entered_comment&lt;br /&gt;
   1_or_more files changed, 3341_or_any_other_number insertions(+), 0&lt;br /&gt;
   deletions(-)&lt;br /&gt;
   create mode 100644 a_file_you_have_added&lt;br /&gt;
   ...&amp;lt;/pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
In order to avoid being prompted that unnecessary files such as editor backup files (e.g., filenames ending in a tilde or with .bak and other unnecessary files are not part of the repository, you can generate files called &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; in your git directories. These files contain descriptions of files which should not be in the repository. a &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; file is valid in the current directory and all of its subdirectories. These may contain further &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt;-files. A good &amp;lt;code&amp;gt;.gitignore&amp;lt;/code&amp;gt; for a paper would be:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# git ignore file for TeX files&lt;br /&gt;
#&lt;br /&gt;
*~&lt;br /&gt;
*.aux&lt;br /&gt;
*.log&lt;br /&gt;
*.bbl&lt;br /&gt;
*.blg&lt;br /&gt;
*.bak&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that after creating the file you will have to add it to the repository! Files that were checked in before the .gitignore exists are not affected by adding the .gitignore, even if the filename is explicitly written down there. In this case, do a git rm [filename] and commit, and afterwards the file will not be checked in again.&lt;br /&gt;
&lt;br /&gt;
That's a summary of the changes, which will be put into the repository&lt;br /&gt;
once you have 'push'ed them:&lt;br /&gt;
   git push origin master&lt;br /&gt;
Please note, that the usual command is&lt;br /&gt;
   git push&lt;br /&gt;
without the origin-master-stuff, which has to be done only once if an&lt;br /&gt;
empty repository was created!&lt;br /&gt;
If you modify previously added files later, you don't have to add them&lt;br /&gt;
again, of course. Instead skip the adding command and 'commit' and&lt;br /&gt;
'push' the changes directly.&lt;br /&gt;
&lt;br /&gt;
Everybody knowing the path to your repository can now clone it, edit&lt;br /&gt;
files and push changes. To update your local copy with the repository&lt;br /&gt;
(i.e. to get the changes of somebody else) use&lt;br /&gt;
   git pull&lt;br /&gt;
&lt;br /&gt;
= Committing only parts of the modifications =&lt;br /&gt;
''A further functionality Manfred finds particularly useful.''&lt;br /&gt;
&lt;br /&gt;
It has been mentioned above that one can only commit selected files with&lt;br /&gt;
&lt;br /&gt;
  git add file1 [file2 ...]  &amp;amp;&amp;amp;  git commit&lt;br /&gt;
&lt;br /&gt;
(Do not use &amp;lt;code&amp;gt;git commit -a&amp;lt;/code&amp;gt; in this case. If you really want to commit all changes, there is no need to first &amp;lt;code&amp;gt;git add&amp;lt;/code&amp;gt; the files for this next commit.) &lt;br /&gt;
&lt;br /&gt;
It is also possible to &amp;lt;code&amp;gt;git add&amp;lt;/code&amp;gt; only parts of the modifications, namely with the &amp;lt;code&amp;gt;-i&amp;lt;/code&amp;gt;(nteractive) Option. When I run&lt;br /&gt;
  &lt;br /&gt;
  git add -i file1 [file2 ...]&lt;br /&gt;
&lt;br /&gt;
and press &amp;lt;code&amp;gt;p&amp;lt;/code&amp;gt; for (patch), 1 for the first file, and then hit [Return], I can decide for every changed block (&amp;quot;hunk&amp;quot;) in file 1 whether (&amp;lt;code&amp;gt;y&amp;lt;/code&amp;gt;) I want to add (&amp;quot;stage&amp;quot;) this change to the next commit or not (&amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;). If I want to commit only part of what git considers a &amp;quot;hunk&amp;quot; in first place, I can press &amp;lt;code&amp;gt;s&amp;lt;/code&amp;gt; in order to split the current hunk. When I'm done with file 1 or when I quit with &amp;lt;code&amp;gt;q&amp;lt;/code&amp;gt;, I can start over from the beginning, e.g. patching the next file.&lt;br /&gt;
&lt;br /&gt;
After the desired hunks have been staged to the index, you run&lt;br /&gt;
&lt;br /&gt;
   git commit&lt;br /&gt;
&lt;br /&gt;
as usual, without &amp;lt;code&amp;gt;-a&amp;lt;/code&amp;gt;!&lt;br /&gt;
&lt;br /&gt;
= GIT Config =&lt;br /&gt;
&lt;br /&gt;
Make sure to update your name and e-mail-address in your home under ''.gitconfig'' like&amp;lt;pre&amp;gt;&lt;br /&gt;
  [user]&lt;br /&gt;
        email = matthias.kuehnel@sternwarte.uni-erlangen.de&lt;br /&gt;
        name = Matthias Kuehnel&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:GIT]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=AtomdDB:_a_guide&amp;diff=1617</id>
		<title>AtomdDB: a guide</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=AtomdDB:_a_guide&amp;diff=1617"/>
		<updated>2018-06-27T08:01:58Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;u&amp;gt;''informal rant from an email that I wrote. Needs some cleaning up. Don't cite!!!''&amp;lt;/u&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''link to AtomDB''&lt;br /&gt;
&lt;br /&gt;
With AtomDB, you have to be a little careful. It does list two wavelengths. One is called &amp;quot;lab/observed&amp;quot; (use this one whenever possible), the other one &amp;quot;theory&amp;quot;. This is somewhat misleading. The real distinction is:&lt;br /&gt;
&lt;br /&gt;
* '''lab/observed''': wavelengths that are widely accepted as being a good reference. This can be either experimental or theoretical. For example, in the case of He-like Ka lines, (for the more common elements) these wavelengths are from Drake 1988, which, as even the title will tell you, are theoretical calculations. They're good (we here use them as calibration references), but they're calculated. In atomDB, the lab/observed wavelengths tend to come with uncertainties.&lt;br /&gt;
&lt;br /&gt;
* '''theory''': mass calculations, and not necessarily good ones at that. They're easily recognizable by their references, such as &amp;quot;Afoster Autos 2010&amp;quot; (= Adam ran autostructure in 2010), &amp;quot;* Afoster FAC *&amp;quot; (= Adam used FAC [he doesn't know any more about FAC than I do], these are more recent to extend Atomdb (3) to include innershell transitions in lower charge states), &amp;quot;Whiteford ICFT&amp;quot; (I don't know the guy, but wavelengths labeled with that are like really really really ... really bad). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Why the distinction? ====&lt;br /&gt;
&lt;br /&gt;
The reason for this two-class system is that for a lot of the &amp;quot;good&amp;quot; wavelengths that's what you get - the wavelength. Especially experiments have a hard time to measure the level energies (note: line = transition between two levels). However, for all these sophisticated plasma models you need way more information, including level energies (a line is the transition between two levels. You can't really measure levels in the lab - or at least I don't know how), radiative rates (Einstein A), but also (temperature dependent) collision strengths, recombination rates, etc. Not only do you need all that information for the strong distinct lines you, Vici, for example, see in your Vela X-1 spectra. To get relative line strengths, charge balance, etc, right in your models, you also need to include all (or at least most) those weak transitions nobody would otherwise care about much. To make calculations easier and databases smaller, you can shove some of the really weak stuff that nobody will ever resolve into something that's called a pseudo-continuum (yes, if you add everything, there is enough weak stuff to create a continuum). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, since AtomDB is not only supposed to be a look-up table but also provide plasma modelling, all the gaps between the good references are filled up with massive in-house calculations, mostly run by Adam. He is not a theorist. He does some checks, but cannot possibly check everything in detail like a theorist writing a paper about a specific line list would (should?) do. To some extend, these calculations are fine (e.g., the &amp;quot;Afoster Autos 2010&amp;quot; for you Si Lya is not bad), but there are some for which I really don't understand how they ever made it into the database...).&lt;br /&gt;
Worst case example: Whiteford ICFT. These seem to affect mostly the He-like systems. For example, Si XIII He alpha (r/resonance or w, upper level ID = 7). The lines is supposed to be at 1865 eV (lab/observed), Whiteford ICFT lists it at 1867 eV (theory). Even worse, for He-like Fe XXV w (same line) the difference is ~10eV. That is so bad that I had a really hard time making Greg believe me that that's actually what the database says - until he finally looked it up himself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Best practice ====&lt;br /&gt;
&lt;br /&gt;
Long story(ies) short: '''it is a good policy to always default to the lab/observed wavelengths'''. As far as I know, even the xspec models (are supposed to) use theory only if lab/observed is NULL.&lt;br /&gt;
&lt;br /&gt;
At the very least, you should never take the level energies out of the level list. Logically, you'd think, if your transition goes into the ground state (level energy = 0), the transition energy should be equal to the energy of the upper level. Plus it's more convenient, because you don't have to go the extra step (that page loads slowly) and it's already in energy, i.e., no extra conversion from wavelength. Problem is, the level energies come from these massive data runs, and especially in the case of the &amp;quot;Whiteford ICFT&amp;quot; reference, they are pretty off. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== What can happen if theories are mixed (within an ion) ===&lt;br /&gt;
Interesting things can happen if different calculations for the same ion are combined, as shown in exhibit B (reqres.pdf) [Lia, you've seen this before]. Originally, I made this plot, because I wanted to see what resolution is required (the purple shades are Astro-H) to be able to resolve lines of the He-triplet. The energy differences between two transitions for each He-like ion is color-coded (see legend) for whether one, both, or none of the two transitions was available as an &amp;quot;observed&amp;quot; line. As you can see, in the He-like case the observed and the theory pretty much follow the same trend, but are shifted with respect to each other. If one line was observed, but the other only theory, the difference between the transitions is a significant outlier to the overall trend. You can also see, that the trends in H-like (Lya1-Lya2) seem to agree better between theory and observed, which might be an indication that the theory is not so bad. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]][[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Atomic_Databases:_General_idea_and_limitations&amp;diff=1616</id>
		<title>Atomic Databases: General idea and limitations</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Atomic_Databases:_General_idea_and_limitations&amp;diff=1616"/>
		<updated>2018-06-27T08:01:46Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''&amp;lt;u&amp;gt;informal rant from an email that I wrote. Needs some cleaning up. Don't cite!!!&amp;lt;/u&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== Idealistic principle: ===&lt;br /&gt;
&lt;br /&gt;
Only well tested / benchmarked / reliable data goes into reference databases. At the same time, the database includes any data anyone could possibly ever need. &lt;br /&gt;
&lt;br /&gt;
=== Problems / Limitations: ===&lt;br /&gt;
Databases would be kinda small and pretty much biased against certain lines that are weak or rare. But the better our instruments (satellites) get, the more (and reliable and accurate) reference data we'll need. Also, it is better to know that there is a line that falls roughly into the right energy band, even if it's somewhat off, than to be completely clueless about what the observed feature could be.&lt;br /&gt;
&lt;br /&gt;
There is only so much you can do about the accuracy part. Therefore, it would be nice if the atomic data came with uncertainties and fit algorithms could handle uncertainties in the model as well as the data. Randall and Adam have been trying to sell this point, but people do not yet think this is a thing (i.e., that proposal got no funding. At least twice, I believe.). These people will come whining soon (around the year 2030 the latest^^).&lt;br /&gt;
&lt;br /&gt;
=== Uncertainties for reference data ===&lt;br /&gt;
&lt;br /&gt;
Currently, only a rather small fraction of the data in AtomDB comes with uncertainties (exhibit A: atomdb3err.png, from Smith &amp;amp; Brickhouse 2014); some of them relatively bad. Laboratory data have the advantage that experimentalist usually have a pretty good grasp of what the limitations of their instruments (and analysis) are. So usually they come out with reasonable errorbars. &lt;br /&gt;
&lt;br /&gt;
Theorists have 2 problems:&lt;br /&gt;
# they (ok, not all of them) believe their calculations are accurate ala &amp;quot;dude, it's a calculation, of course there are no uncertainties!&amp;quot; - except, outside of H-like, the equations cannot be solved analytically, i.e., perturbation theories, i.e., approximations. Plus there are still some open questions as to what is the correct description of interactions in each ion (things like relativistic effects, distorted waves, the amount of configuration interactions, etc).&lt;br /&gt;
&lt;br /&gt;
# it's much harder to get an estimate for uncertainties on your theories. i guess, one way to do it, would be to play with certain parameters, run the code a bunch of times, see how the results scatter. I don't think anybody really does that. Also, you'd still not really know how reliable those uncertainties are. The other options are to compare the calculation to experimental data (if they exist; plus they're also only so accurate) or to compare to other theories. I don;t quite see the point of comparing to other theories: why do we need 20 different codes that produce the exact same result?&lt;br /&gt;
&lt;br /&gt;
The comparison between theory and experiment are important, though, because we need to understand the theory better. For one, because physics. But also because we cannot systematically measure everything at the lab. There is neither time nor money. Also, some things blend so badly that even the best instruments will never be able to split the lines. Therefore, we do need the codes to fill up the databases. We just need to make sure first that we can trust them -- at least to a certain degree of accuracy.&lt;br /&gt;
&lt;br /&gt;
To some extend it's also an interpretation question: if you can measure a certain line in the lab really accurately, you can compare different theories and see if, for example, QED plays an important role for that line or whether it has no contribution. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To be fair, experimentalists have problems, too:&lt;br /&gt;
* in experiments, things can go wrong, too. Especially, what you would call an &amp;quot;absolute&amp;quot; measurement is really hard to do. A lot of the times, especially for wavelengths measurements, relative measurements are by far more common, i.e., you measure a calibration spectrum containing lines whose wavelengths are well known, use that to set up your scale, then use that scale to derive the wavelengths of the &amp;quot;unknown&amp;quot; lines. So at best the accuracy of the newly measured lines is as good as the uncertainty of the reference lines, usually a bit lower. You can see how this is going to decay... . Plus you cannot easily swap the underlying reference wavelengths for other wavelengths, because usually the scale is not linear. &lt;br /&gt;
&lt;br /&gt;
=== The hard life of data providers ===&lt;br /&gt;
Collections like atomic databases are very convenient for a lot of people, especially the ones not well versed in atomic physics, since everything can be found in a single place and has undergone -- to some extend at least -- quality control. However, these databases pose a major problem for '''data providers''' -- this includes experimentalists as well as theorists: '''they do not get the citations they need'''.&lt;br /&gt;
&lt;br /&gt;
Everyone is aware that a high number of citations is key to survival in science; citations are what makes papers ''high impact'' and help to secure funding for future projects. Papers providing reference data often are merely cited by the database that incorporates their results, but hardly ever by people actually using the provided data. This way the database gets many citations. However, citations do not recursively trickle down to the original source. &lt;br /&gt;
This makes it really hard for the data providers to keep a track record of how widely used their work is. By extension this can lead to the data providers not longer being able to provide the data that is needed by the community. &lt;br /&gt;
&lt;br /&gt;
Less political, but science-wise equally important: citing improperly also makes it harder to compare, e.g., Doppler shifts derived in different papers, since differences in the Doppler shift do not only depend on the observation/analysis, but also on the value of the reference wavelength. Similarly, for relative intensities, etc. And sometimes even the database is not cited. &lt;br /&gt;
&lt;br /&gt;
Please be aware of this situation and try to cite atomic reference papers properly -- especially if you pick specific sets of reference lines out of the database (in contrast to using a fit functions that relies on the whole database).&lt;br /&gt;
In practice this means: refer to the atomic database that you used to find the reference data (including the version number), but then also go the extra step and '''look up and cite''' the original paper where the data came from. This information is included in the database for everyone to find. &lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]][[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Common_lines_in_the_X-rays:_K_%CE%B1,_He_%CE%B1,_Ly_%CE%B1&amp;diff=1615</id>
		<title>Common lines in the X-rays: K α, He α, Ly α</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Common_lines_in_the_X-rays:_K_%CE%B1,_He_%CE%B1,_Ly_%CE%B1&amp;diff=1615"/>
		<updated>2018-06-27T08:01:37Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Principle quantum number ===&lt;br /&gt;
In a very simple model (the Bohr model), an atom is thought of as a solar system like setup: the nucleus, consisting of protons and neutrons, i.e. the bulk of the mass, is 'orbited' by the electrons on discrete energy levels (orbitals). But unlike the solar system in an atom the attraction is provided by electromagnetic forces rather than gravity. For the orbitals the potential energy increases with distance to the nucleus. The location of an electron in one of these energy levels is denoted by the principle quantum number ''n'' where ''n''=1 corresponds to the innermost orbital.&lt;br /&gt;
&lt;br /&gt;
Often these energy levels are denoted with letters: the energy levels K,L,M,... correpsond to the principal quantum numbers ''n''=1,2,3,... .&lt;br /&gt;
Each orbital can hold ''2n&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;'' electrons.&lt;br /&gt;
&lt;br /&gt;
The state of an atom or ion with the lowest possible energy, is called the ''ground'' state. In the ground state, all electrons are located in orbitals as close to the nucleus as possible. However, electrons can jump between different orbitals. In order to excite an electron to higher levels, it needs to absorb additional energy, e.g., from photons or through collisions. De-excitation of an electron into a lower level can also happen spontaneously by emitting energy in form of a photon. &lt;br /&gt;
&lt;br /&gt;
Note that the Bohr model is a first-order approximation and can only explain the principle quantum number. For a more accurate description of orbitals, quantum mechanics is &lt;br /&gt;
essential. &lt;br /&gt;
&lt;br /&gt;
=== Rydberg series in Hydrogen ===&lt;br /&gt;
Early on it was discovered that the emission spectrum of atomic hydrogen, the simplest of all atoms, forms a distinct set of spectral series. These series are called the Rydberg series, after the Swedish physicist who discovered a description for these series in the late 1880s. He found that within each series the lines have the same lower level and that the wavelengths of the emission lines can be reproduced by the Rydberg formula&lt;br /&gt;
&lt;br /&gt;
1/λ = ''R'' (1/n'&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt; - 1/n&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
where n' is the lower energy level, n the upper energy level, and ''R'' the Rydberg constant.&lt;br /&gt;
The first handful of series are named after famous physcists:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align: left;width:5em;&amp;quot; |n'&lt;br /&gt;
! style=&amp;quot;text-align: left;width:15em;&amp;quot; |series&lt;br /&gt;
|-&lt;br /&gt;
|1 (K) &lt;br /&gt;
|Lyman series &lt;br /&gt;
|-&lt;br /&gt;
|2 (L) &lt;br /&gt;
|Balmer series &lt;br /&gt;
|-&lt;br /&gt;
|3 (M) &lt;br /&gt;
|Paschen series &lt;br /&gt;
|-&lt;br /&gt;
|4 (N) &lt;br /&gt;
|Brackett series &lt;br /&gt;
|-&lt;br /&gt;
|5 (O) &lt;br /&gt;
|Pfund series &lt;br /&gt;
|-&lt;br /&gt;
|6 (P) &lt;br /&gt;
|Humphreys series &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Spectral lines within a series are designated with Greek letters depending on the upper level, starting with α for n=n'+1, β for n=n'+2, etc. For example, a transition from n=2 to n'=1 would be called Lyman α, or Ly α for short.&lt;br /&gt;
&lt;br /&gt;
=== Generalization of the Rydberg series ===&lt;br /&gt;
&lt;br /&gt;
In case of the hydrogen atom, the nucleus contains only a proton. There are other systems, H-like ions, where also only 1 electron orbits around an albeit heavier nucleus that can contain multiple protons and neutrons depending on the element. These hydrogenic ions display the same series of spectral lines as the hydrogen atom, only at higher energies. Their wavelengths are described by the Rydberg formula modified by a factor of ''Z''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;, where ''Z'' is the atomic number, i.e., the proton number of the element. &lt;br /&gt;
Starting with about H-like B (Ly α ~250 eV) some of these transitions (especially the Lyman series) fall into the X-ray regime. &lt;br /&gt;
&lt;br /&gt;
It turns out that the Rydberg series can be found in even more generalized ions. Adding a second electron to the ion still results in a pattern of spectral lines very similar to the pattern known from the hydrogenic ions. &lt;br /&gt;
But the negative charge of the second electron does screen the positive charge of the nucleus that the first electron &amp;quot;feels&amp;quot; to some extend, effectively lowering ''Z''&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;. The spectral lines of the He-like system are therefore shifted to somewhat lower energies than the lines in the H-like ion with the same atomic number. &lt;br /&gt;
&lt;br /&gt;
The same is true for basically any number of electrons; if the electron distribution in the orbitals is such that the transitions can occur, the familiar pattern of the Rydberg series can be observed.&lt;br /&gt;
However, due to the larger number of electrons, the ions become too complex and the Rydberg formula can no longer reproduce the wavelengths of the corresponding transitions. &lt;br /&gt;
&lt;br /&gt;
==== K transitions ====&lt;br /&gt;
&lt;br /&gt;
Transitions into the K-shell are the equivalent of the Lyman series for multi-electron ions. &lt;br /&gt;
This type of transition is the most common transitions in the X-rays. They're easily produced in He-like and H-like ions, but also possible in ions with lower ionization stages. He- and H-like ions are often the dominant (along with bare ions, but bare ions have no electrons to jump between levels and therefore do not produce spectral lines) ionization stage in energetic or hot environments like the vicinity of black holes, since for mid-Z elements the energy needed to produce He- and H-like ions (ionization potential) is fairly low (~4.12 keV to make H-like Ar). &lt;br /&gt;
&lt;br /&gt;
==== others ====&lt;br /&gt;
&lt;br /&gt;
Of course, also the other series besides the Lyman series have their equivalents in multi-electron systems. But since the energy difference between neighboring orbitals decreases with increasing ''n''', already the L-shell transitions (Balmer series equivalent) for the lighter elements move into the UV region. For example, Fe L lines (for various ionization stages of Fe) largely fall below 1 keV, with a limit of about 1.3 keV. &lt;br /&gt;
&lt;br /&gt;
To see M-shell transitions in the X-rays, high-Z elements (e.g., Eu, W) are required. The relative abundance of these elements is so low that they are not typically observed in astrophysics.&lt;br /&gt;
&lt;br /&gt;
=== So what's the difference between K α, He α, and Ly α? ===&lt;br /&gt;
&lt;br /&gt;
K α is a general term denoting the transition of an electron between the n'=1 and n=2 energy levels. Such a transition can happen in any ion, provided there is an initial open space (hole) in the final orbital (in n'=1 for emission, n=2 for absorption). Configurations with such an inner-shell hole can also occur in ions that have electrons in the n&amp;gt;=3 orbitals. Therefore, &amp;quot;Fe K α&amp;quot; (for example) could be a spectral line originating from a n=1-2 transition in '''any''' Fe ion. &lt;br /&gt;
&lt;br /&gt;
To be more specific, for such a transition in helium-like Fe, i.e., Fe with 2 electrons, one could say &amp;quot;He-like Fe K α&amp;quot; - or &amp;quot;Fe He α&amp;quot; for short.&lt;br /&gt;
&lt;br /&gt;
Because of the history of the Rydberg series, a K α transition in a hydrogenic ion is still called Ly α. In case of the Fe example, this would be &amp;quot;Fe Ly α&amp;quot; for H-like Fe. &lt;br /&gt;
&lt;br /&gt;
=== Fine structure ===&lt;br /&gt;
&lt;br /&gt;
The Bohr model and the Rydberg formula only account for the gross structure of the spectra, which only depends on the principle quantum number ''n''. In reality, a number of other effects (kinetic energy relativistic correction, spin-orbit coupling, Darwin term) separate this gross structure into finer levels. &lt;br /&gt;
This is referred to as fine structure splitting. It lifts the degeneracy of the levels in //n// and splits the sub-shells into separate energy levels that now also depend on the angular momentum (azimuthal) and total angular momentum quantum numbers ''l'' and ''j''. &lt;br /&gt;
Every orbital has ''l''=0,1,...,''n''-1 sub-shells, which in turn split into one to two levels with total angular momenta ''j''=''l''+-1/2. The values of ''l'' are often written in form of letters where ''l''=s,p,d,f,g,... correspond to ''l''=0,1,2,... . &lt;br /&gt;
With this fine structure splitting, transitions from ''n''=2 to ''n'''=1 have slightly different energies. For example, the transition 2p&amp;lt;sub&amp;gt;1/2&amp;lt;/sub&amp;gt;-&amp;gt;1s&amp;lt;sub&amp;gt;1/2&amp;lt;/sub&amp;gt; has a slightly lower energy than the transition 2p&amp;lt;sub&amp;gt;3/2&amp;lt;/sub&amp;gt;-&amp;gt;1s&amp;lt;sub&amp;gt;1/2&amp;lt;/sub&amp;gt;. Using spectrometers with sufficient spectral resolution, Ly α is seen as two distinct lines Ly α&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; and Ly α&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;. &lt;br /&gt;
While these individual lines are still a, e.g., K α type transition, they often have individual &amp;quot;names&amp;quot; to identify them. See, for example, the [[Line_triplet_for_He-like_ions|the He-like system]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]][[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=What_are_%22forbidden%22_lines%3F&amp;diff=1614</id>
		<title>What are &quot;forbidden&quot; lines?</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=What_are_%22forbidden%22_lines%3F&amp;diff=1614"/>
		<updated>2018-06-27T08:01:24Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''' Astrophysicist interpretation: '''&lt;br /&gt;
&lt;br /&gt;
{{cquote|The transition rate for forbidden lines is incredibly low.  That means it is much more likely for an electron to transfer to a different state (via collisions or photo-excitation) than it is for spontaneous decay along the forbidden path.  That's why we can see &amp;quot;forbidden&amp;quot; lines from the diffuse ISM; the densities are so low that the collision rate is smaller than the spontaneous decay rate (&amp;lt;latex&amp;gt;A_{ji}&amp;lt;/latex&amp;gt;), which is not typical for laboratory conditions on Earth at the time these naming conventions took hold.}}&lt;br /&gt;
&lt;br /&gt;
''' Atomic physicist: '''&lt;br /&gt;
&lt;br /&gt;
{{cquote|Usually you'd call a line forbidden if it is not a electric dipole allowed transition. There are a number of other possibilities: magnetic dipole, electric quadrupole, magnetic quadrupole, electric octupole, magnetic ... you get the picture. All of these have smaller and smaller probabilities to actually happen.  So all that 'forbidden' really means is that the transition really has smallish Einstein A, i.e., spontaneous decay rate.}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;Strictly forbidden&amp;quot; lines ===&lt;br /&gt;
&lt;br /&gt;
If you look at the table for the selection rules (e.g., [http://en.wikipedia.org/wiki/Selection_rules]), you will find some transitions, especially those with J = 0 -&amp;gt; 0, that are never allowed in any of the multipole things, i.e., they are truly forbidden and you will really never ever see them.&lt;br /&gt;
&lt;br /&gt;
In astrophysics, these are often referred to as ''&amp;quot;strictly forbidden&amp;quot;''.&lt;br /&gt;
&lt;br /&gt;
Examples for these truly forbidden transitions are the 1s2s 1S0 &amp;amp;rarr; 1s2 1S0 and 1s2p 3P0 &amp;amp;rarr; 1s2 1S0 transitions. You can cascade from higher levels into those, but they won't spontaneously decay into the ground state.&lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]][[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Line_triplet_for_He-like_ions&amp;diff=1613</id>
		<title>Line triplet for He-like ions</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Line_triplet_for_He-like_ions&amp;diff=1613"/>
		<updated>2018-06-27T08:01:11Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A helium-like ion is any nucleus with exactly two bound electrons.&lt;br /&gt;
&lt;br /&gt;
=== F, I, R notation ===&lt;br /&gt;
&lt;br /&gt;
F, I, R stand for forbidden, intercombination and resonance line. &lt;br /&gt;
&lt;br /&gt;
* R is the strongest line (at least for certain plasma conditions). &lt;br /&gt;
* The intercombination lines have their name because they intercombine levels from a singlet state (1S) and a triplet state (3P).  ''(In the really early days of spectroscopy, before it was known that singlets and triplets exists, it was actually thought that there are two types of He: parahelium and orthohelium. Now we know better.)''&lt;br /&gt;
* The forbidden line is called forbidden because it is not an electric dipole allowed transition.  See [[What_are_&amp;quot;forbidden&amp;quot;_lines%3F | this note about forbidden lines]]&lt;br /&gt;
&lt;br /&gt;
=== w, x, y, z notation ===&lt;br /&gt;
&lt;br /&gt;
[http://adsabs.harvard.edu/abs/1972MNRAS.160...99G| Gabriel (1972)] used the 26 letters of the alphabet to cross-reference Li-like and He-like Kα transitions in his tables. Today, these letters are widely used in atomic and plasma physics to identify transitions in Li-like and He-like ions.&lt;br /&gt;
The figure below describes the w, x, y, z notation for the He-like ion triplet ([http://www.edpsciences.org/10.1051/0004-6361:20010959| Porquet et al. 2001]).&lt;br /&gt;
&lt;br /&gt;
[[File:porquet_helike.png]]&lt;br /&gt;
&lt;br /&gt;
=== Why are there two different transition (x and y) for the intercombination lines? ===&lt;br /&gt;
&lt;br /&gt;
There are actually two lines, you just don't typically resolve them in elements seen in astrophysical plasmas (at the current resolution).&lt;br /&gt;
&lt;br /&gt;
It's because of the [[atomic:rules | selection rules]]. You can excite an electron to any energy level, but for spontaneous decay you have to follow the selection rules.&lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]][[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=How_to_identify_ions&amp;diff=1612</id>
		<title>How to identify ions</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=How_to_identify_ions&amp;diff=1612"/>
		<updated>2018-06-27T08:00:59Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are 3 distinct ways to name ions. All of them encode the element, i.e., the proton number ''Z'', and the number of electrons in the shell in one way or another. Which of these names is used, however, partly depends on preference, and partly on which information you would like to get across at first glance.&lt;br /&gt;
&lt;br /&gt;
As an example, we'll use a carbon (C, ''Z''=6) ion with 2 (out of its 6) electrons left in its shell.&lt;br /&gt;
&lt;br /&gt;
=== The Astrophysics Way ===&lt;br /&gt;
&lt;br /&gt;
In astrophysics, just count your way through the iso-nuclear sequence (equal ''Z'') starting at the neutral, i.e., the neutral element is denoted by a Roman numeral I, one times ionized by a Roman II, and so forth. &lt;br /&gt;
&lt;br /&gt;
So in our example:&lt;br /&gt;
&lt;br /&gt;
'''C V'''&lt;br /&gt;
&lt;br /&gt;
=== The Atomic Physics Way ===&lt;br /&gt;
&lt;br /&gt;
Ions within the same iso-electronic sequence, i.e., same number of bound electrons but different nuclei (''Z''), usually show the same patterns of spectral lines. Iso-electronic sequences are named after the (neutral) element with Z equal to the number of electrons. Denoting the ion via its iso-electronic sequence, tells you how many electrons the ion still has.&lt;br /&gt;
&lt;br /&gt;
Neutral helium (He, ''Z''=2) carries 2 electrons; therefore, in our example, to show that C with 2 electrons behaves very much like neutral He, you would say:&lt;br /&gt;
&lt;br /&gt;
''' He-like C '''&lt;br /&gt;
&lt;br /&gt;
As a special case, H-like ions are sometimes also referred to as 'hydrogenic ions'. &lt;br /&gt;
&lt;br /&gt;
=== The Chemistry Way ===&lt;br /&gt;
&lt;br /&gt;
Rather than counting the number of electrons remaining in the ion, you can instead communicate the charge of the ion, which is equivalent to the number of missing electrons:&lt;br /&gt;
&lt;br /&gt;
''' C&amp;lt;sup&amp;gt;4+&amp;lt;/sup&amp;gt; '''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Obviously, all three naming schemes can be translated into each other easily. However, this conversion requires some basic knowledge (or a printed version) of the periodic table, especially the number of protons, ''Z'', for some of the more abundant elements.&lt;br /&gt;
&lt;br /&gt;
[[Category:Atomic Physics]] [[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3d_(xfig_example)&amp;diff=1548</id>
		<title>Object3d (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3d_(xfig_example)&amp;diff=1548"/>
		<updated>2018-05-18T09:21:11Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
&lt;br /&gt;
[[File:object3d.png|300px]]&lt;br /&gt;
===== Plotting in 3D =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
% -*- mode: slang; mode: fold -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
require(&amp;quot;lbscripts&amp;quot;);&lt;br /&gt;
()=evalfile(&amp;quot;/home/falkner/work/lightbending/lbscripts.git/modules/ptrace.sl&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
%%%%% GLOBAL PARAMETER: =======================================================&lt;br /&gt;
&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: modified Spherical angles&lt;br /&gt;
variable cam1 = 20*PI/180.; % cam1 = PI/2 -  thetaa&lt;br /&gt;
variable cam2 =  0*PI/180.; % cam2 = PI - phi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% LIGHT BENDING:&lt;br /&gt;
variable Mns = 1.44*2e30;&lt;br /&gt;
%variable Rns = 10e3; % Physical radius of the neutron star&lt;br /&gt;
variable rs = 2*Const_G*Mns/sqr(Const_c)*1e1; % Schwarzschild radius&lt;br /&gt;
variable r = 15e3; % radius of photon emission&lt;br /&gt;
variable u = rs/r;&lt;br /&gt;
&lt;br /&gt;
%%% GEOMETRY:&lt;br /&gt;
variable R = 1; % radius of the sphere [BUG HERE FOR R /= 1]&lt;br /&gt;
&lt;br /&gt;
variable i = 60*PI/180.; % Inclination of the observer&lt;br /&gt;
&lt;br /&gt;
variable theta =  45*PI/180.; % Spot position&lt;br /&gt;
variable phi   = 220*PI/180.; % Spot position&lt;br /&gt;
&lt;br /&gt;
%%% PLOT DIMENSION&lt;br /&gt;
variable size = 12;&lt;br /&gt;
variable xmin = -1.00*R;&lt;br /&gt;
variable xmax =  2.20*R;&lt;br /&gt;
variable ymin = -0.55*R;&lt;br /&gt;
variable ymax =  2.10*R;&lt;br /&gt;
&lt;br /&gt;
%%% PLOT COLORS&lt;br /&gt;
variable col_cbg = [&amp;quot;#88CCEE&amp;quot;,&lt;br /&gt;
		    &amp;quot;#999933&amp;quot;,&lt;br /&gt;
		    &amp;quot;#AA4499&amp;quot;,&lt;br /&gt;
		    &amp;quot;#332288&amp;quot;&lt;br /&gt;
		   ];&lt;br /&gt;
% variable photon1 = col_cbg[2];&lt;br /&gt;
% variable photon2 = col_cbg[3];&lt;br /&gt;
% variable obsplane = col_cbg[1];&lt;br /&gt;
variable photon1 = CB_COLOR_SCHEME[1];&lt;br /&gt;
variable photon2 = CB_COLOR_SCHEME[2];&lt;br /&gt;
variable obsplane = &amp;quot;#505050&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PHYSIKAL VECTORS ==========================================================&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: Basis vectors&lt;br /&gt;
variable c1 = vector_rotate( vector(1,0,0), vector(1,0,0), cam1 );&lt;br /&gt;
variable c2 = vector_rotate( vector(0,1,0), vector(1,0,0), cam1 );&lt;br /&gt;
variable c3 = vector_rotate( vector(0,0,1), vector(1,0,0), cam1 );&lt;br /&gt;
c1 = vector_rotate( c1, vector(0,0,1), cam2 );&lt;br /&gt;
c2 = vector_rotate( c2, vector(0,0,1), cam2 );&lt;br /&gt;
c3 = vector_rotate( c3, vector(0,0,1), cam2 );&lt;br /&gt;
&lt;br /&gt;
%%% AXIS&lt;br /&gt;
variable ex = vector( R, 0, 0 );&lt;br /&gt;
variable ey = vector( 0, R, 0 );&lt;br /&gt;
variable ez = vector( 0, 0, R );&lt;br /&gt;
&lt;br /&gt;
%%% OBSERVER&lt;br /&gt;
variable k = vector( sin(i), 0, cos(i) );&lt;br /&gt;
%%% SPOT&lt;br /&gt;
variable n  = vector( 1, phi, theta ; sph );&lt;br /&gt;
&lt;br /&gt;
%%% LIGHT BENDING CALCULATIONS&lt;br /&gt;
%%% Attention: simple calculations based on beloborodov 2002, i.e., it&lt;br /&gt;
%%% does not work for all settings (where alpha &amp;gt; 90°)&lt;br /&gt;
&lt;br /&gt;
variable lbpar = struct{&lt;br /&gt;
  nmr = 10,&lt;br /&gt;
  nma = 100,&lt;br /&gt;
  rmin = 0.95*r/rs,&lt;br /&gt;
  rmax = 1.05*r/rs,&lt;br /&gt;
  lbmeth = &amp;quot;belob&amp;quot;,&lt;br /&gt;
  tdelay=0,&lt;br /&gt;
};&lt;br /&gt;
variable lbmap = lb_psir2b_map( lbpar );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Solution 1:&lt;br /&gt;
variable psi   = acos( dotprod(k,n) ); &lt;br /&gt;
variable alpha = acos( 1 - ( 1-cos(psi) )*( 1-u ) );&lt;br /&gt;
alpha = lb_interp( lbmap, r/rs, psi, struct{ a, b } ).a;&lt;br /&gt;
&lt;br /&gt;
variable b     = R*sin(alpha)/sqrt(1-u);&lt;br /&gt;
b = lb_interp( lbmap, r/rs, psi, struct{ a, b } ).b*rs/r*R;&lt;br /&gt;
&lt;br /&gt;
variable crho  = ( ( k^(n^k) ) * ey )/abs( k^(n^k) );&lt;br /&gt;
variable srho  = abs( ( k^(n^k) ) ^ ey )/abs( k^(n^k) );&lt;br /&gt;
&lt;br /&gt;
variable k0 = unit_vector(vector_rotate( n, crossprod(n,k), alpha ));&lt;br /&gt;
&lt;br /&gt;
%% Solution 2:&lt;br /&gt;
%%   1 - cos(alpha) = ( 1 - cos(psi) )*(1-u)&lt;br /&gt;
%%   b = R*sin(alpha) / sqrt(1-u)&lt;br /&gt;
variable _psi   = 2*PI - psi;&lt;br /&gt;
variable _alpha = acos( 1 - ( 1-cos(_psi) )*( 1-u ) );;&lt;br /&gt;
_alpha = lb_interp( lbmap, r/rs, _psi, struct{ a, b } ).a;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable fac = rs/r*R;&lt;br /&gt;
variable _b     = R*sin(_alpha)/sqrt(1-u);&lt;br /&gt;
_b = lb_interp( lbmap, r/rs, _psi, struct{ a, b } ).b*fac;&lt;br /&gt;
variable _rp = lb_p_b( _b/fac )*fac;&lt;br /&gt;
variable _pp = lb_psiper_u_belob_( fac/_rp );&lt;br /&gt;
&lt;br /&gt;
variable _k0 = unit_vector(vector_rotate( n, crossprod(n,k), -_alpha ));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% FUNCTIONS =================================================================&lt;br /&gt;
%%% Must be defined here, as functions require some global variables!&lt;br /&gt;
&lt;br /&gt;
% Projection of vectors onto the camera plane&lt;br /&gt;
define P( v ){ %{{{&lt;br /&gt;
  variable vec = @v;&lt;br /&gt;
  if( typeof(vec)== Array_Type ){&lt;br /&gt;
    vec = struct_array_2_struct_of_arrays( v );&lt;br /&gt;
  }&lt;br /&gt;
  variable pro = vector_change_basis( vec, c1, c2, c3 );&lt;br /&gt;
  return pro;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% Return x,z component of Projection&lt;br /&gt;
define PP( v ){ %{{{&lt;br /&gt;
  variable p = P(v);&lt;br /&gt;
  return p.x, p.z;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% GREAT CIRCLE between 2 Vector&lt;br /&gt;
define GC( a, b ){ %{{{&lt;br /&gt;
  &lt;br /&gt;
  variable N = qualifier(&amp;quot;N&amp;quot;,100);&lt;br /&gt;
  variable R = qualifier_exists(&amp;quot;R&amp;quot;)? 1:0;&lt;br /&gt;
  &lt;br /&gt;
  variable na = unit_vector(a);&lt;br /&gt;
  variable nb = unit_vector(b);&lt;br /&gt;
&lt;br /&gt;
  variable rotangle = [0:acos(dotprod(na,nb))-R*2*PI:#N];&lt;br /&gt;
  variable rotvec   = unit_vector( crossprod( a, b ) );&lt;br /&gt;
&lt;br /&gt;
  variable gc = vector_rotate( na, rotvec, rotangle );&lt;br /&gt;
&lt;br /&gt;
  return gc;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% PHOTON TRAJECTORY&lt;br /&gt;
define T(p){ %{{{&lt;br /&gt;
  variable B = b/R*r;&lt;br /&gt;
  variable X = rs*( 1 - cos(p))/(2*( 1 + cos(p)));&lt;br /&gt;
  variable trace = sqrt( sqr(X) + sqr(B/sin(p)) ) - X;&lt;br /&gt;
  return trace/r*R;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
define PT(){ %{{{&lt;br /&gt;
  variable brs = b/R*r/rs;&lt;br /&gt;
  variable pt = lb_ptrace_belob( brs ; n=N, pmax=psi );&lt;br /&gt;
  &lt;br /&gt;
  variable v = vector( pt.r*rs/r*R, [0:0:#N], -pt.p ; sph );&lt;br /&gt;
  v = vector_rotate( v, ey, i );&lt;br /&gt;
  v = vector_rotate( v, k, -atan2(crho,srho) );&lt;br /&gt;
&lt;br /&gt;
  return v;  &lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
define _PT(){ %{{{&lt;br /&gt;
  variable brs = _b/R*r/rs;&lt;br /&gt;
&lt;br /&gt;
  variable pt = lb_ptrace_belob( brs ; n=N, pmax=2*PI-psi );&lt;br /&gt;
  &lt;br /&gt;
  variable v = vector( pt.r*rs/r*R, [0:0:#N], -pt.p ; sph );&lt;br /&gt;
  v = vector_rotate( v, ey, i );&lt;br /&gt;
  v = vector_rotate( v, k, PI-atan2(crho,srho) );&lt;br /&gt;
&lt;br /&gt;
  return v;  &lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PREPARE PLOT ==============================================================&lt;br /&gt;
variable s = 1.5;&lt;br /&gt;
variable ls= s*1.06;&lt;br /&gt;
variable N = 300;&lt;br /&gt;
&lt;br /&gt;
% arrow head&lt;br /&gt;
variable ARROW = xfig_create_arrow(;arrow_type=2,&lt;br /&gt;
				   arrow_style=1,&lt;br /&gt;
				   arrow_width=8,&lt;br /&gt;
				   arrow_heigth=64,&lt;br /&gt;
				   arrow_thickness=2&lt;br /&gt;
				  );&lt;br /&gt;
variable AXIS = @ARROW;&lt;br /&gt;
AXIS.arrow_style=0;&lt;br /&gt;
AXIS.arrow_type=0;&lt;br /&gt;
&lt;br /&gt;
% circle&lt;br /&gt;
variable xycirc = vector( [R:R:#N], [0:2*PI:#N], [PI/2.:PI/2.:#N]; sph );&lt;br /&gt;
variable xzcircn = vector( [R:R:#N], [0:0:#N], PI/2.*[-1:1:#N]; sph );&lt;br /&gt;
variable xzcircs = vector( [R:R:#N], [0:0:#N], PI/2.*[1:3:#N]; sph );&lt;br /&gt;
&lt;br /&gt;
% n help lines&lt;br /&gt;
variable ncirc  = vector( [R:R:#N], [phi:phi:#N], [0:PI/2:#N]; sph );&lt;br /&gt;
variable nline  = vector( [0:R:#N], [phi:phi:#N], [PI/2:PI/2:#N];sph);&lt;br /&gt;
&lt;br /&gt;
% kn circ&lt;br /&gt;
variable kncirc = R*GC( unit_vector(n), unit_vector(k) );&lt;br /&gt;
variable nkcirc = R*GC( unit_vector(n), unit_vector(k) ; R );&lt;br /&gt;
&lt;br /&gt;
%%% PLOT ======================================================================&lt;br /&gt;
variable xp = xfig_plot_new(size,(ymax-ymin)/(xmax-xmin)*size);&lt;br /&gt;
xp.world( xmin, xmax, ymin, ymax ; padx=0.0, pady=0.0 );&lt;br /&gt;
xp.axis(;off);&lt;br /&gt;
&lt;br /&gt;
% axis&lt;br /&gt;
xp.plot( PP([0,s]*R*ex); forward_arrow=AXIS );&lt;br /&gt;
xp.xylabel( PP(ls*R*ex), &amp;quot;$x$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([0,s]*ey) );&lt;br /&gt;
%xp.xylabel( PP(ls*ey), &amp;quot;$y$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([0,s]*R*ez); forward_arrow=AXIS );&lt;br /&gt;
xp.xylabel( PP(ls*ez), &amp;quot;$z$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% circles&lt;br /&gt;
xp.plot( PP(xzcircn) ; line=0, width=2 );&lt;br /&gt;
xp.plot( PP(xzcircs) ; line=0, width=2 );&lt;br /&gt;
xp.plot( PP(xycirc)  ; line=0, width=2 );&lt;br /&gt;
&lt;br /&gt;
% rotation&lt;br /&gt;
variable rot = 0.8*s*R*ez+vector( 0.15*[R:R:#N], PI/180*[-60:265:#N], [PI/2.:PI/2.:#N]; sph );&lt;br /&gt;
xp.plot( PP(rot); forward_arrow=AXIS );&lt;br /&gt;
&lt;br /&gt;
% observer&lt;br /&gt;
xp.plot( PP([0,1]*R*k) ; line=1 );&lt;br /&gt;
xp.plot( PP([1,s]*R*k) ; line=0 );&lt;br /&gt;
xp.xylabel( PP(ls*k), &amp;quot;$\vec{k}$&amp;quot;R, 1.5, 1.5 );&lt;br /&gt;
xp.plot( PP([1,s]*R*k); forward_arrow=ARROW );&lt;br /&gt;
&lt;br /&gt;
% observer plane&lt;br /&gt;
variable deltap = 1.8*R;&lt;br /&gt;
variable oplane = 1.2*R*vector( [-1, 1, 1,-1,-1],&lt;br /&gt;
			  [-1,-1, 1, 1,-1],&lt;br /&gt;
			  [ 0, 0, 0, 0, 0]&lt;br /&gt;
			);&lt;br /&gt;
oplane.z += deltap;&lt;br /&gt;
oplane = vector_rotate( oplane, ey, i );&lt;br /&gt;
xp.plot( PP(oplane); depth=40, width=3, color=obsplane );&lt;br /&gt;
%variable oplab = 1.8*R*vector( -.01, -.95, 0 );&lt;br /&gt;
variable oplab = 1.8*R*vector( .60, 0, 0 );&lt;br /&gt;
oplab.z += deltap;&lt;br /&gt;
oplab = vector_rotate( oplab, ey, i );&lt;br /&gt;
%xp.xylabel( PP(oplab), &amp;quot;observer plane&amp;quot;R ; rotate=-0.97*i*180/PI, color=obsplane  );&lt;br /&gt;
xp.xylabel( PP(oplab), &amp;quot;{\footnotesize observer plane}&amp;quot;R ; rotate=90, color=obsplane  );&lt;br /&gt;
variable ocirc = vector( [R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
ocirc.z += deltap;&lt;br /&gt;
ocirc = vector_rotate( ocirc, ey, i );&lt;br /&gt;
xp.plot( PP(ocirc); color=obsplane );&lt;br /&gt;
variable A = 1.15*s*R*vector( [0,0],[0,1],[0,0] );&lt;br /&gt;
A.z += deltap;&lt;br /&gt;
A = vector_rotate( A, ey, i );&lt;br /&gt;
xp.plot( PP(A) ; forward_arrow=AXIS, color=obsplane );&lt;br /&gt;
xp.xylabel( PP(struct_of_arrays_2_struct_array(A)[-1]), &amp;quot;$A$&amp;quot;R, -.5, 1.2;color=obsplane);&lt;br /&gt;
variable B = s*R*vector( [0,-1],[0,0],[0,0] );&lt;br /&gt;
B.z += deltap;&lt;br /&gt;
B = vector_rotate( B, ey, i );&lt;br /&gt;
xp.plot( PP(B) ; forward_arrow=AXIS,color=obsplane );&lt;br /&gt;
xp.xylabel( PP(struct_of_arrays_2_struct_array(B)[-1]), &amp;quot;$B$&amp;quot;R, -.4, 2.2;color=obsplane );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%%% IMPACT A &amp;amp; B&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Line in OP from center to impact point 1&lt;br /&gt;
variable IB = b*vector( [0,1], PI/2+[0,PI/2-atan2(crho,srho)], PI/2*[1,1] ; sph );&lt;br /&gt;
variable IB2 = @IB;&lt;br /&gt;
IB.z += deltap;&lt;br /&gt;
IB = vector_rotate( IB, ey, i );&lt;br /&gt;
xp.plot( PP(IB) ; line=1,color=obsplane );&lt;br /&gt;
% Projected circle at the impact point 1&lt;br /&gt;
variable IBcirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
IBcirc.z += deltap;&lt;br /&gt;
IBcirc = vector_rotate( IBcirc, ey, i );&lt;br /&gt;
IBcirc += struct_of_arrays_2_struct_array(IB)[-1] - struct_of_arrays_2_struct_array(IB)[0];&lt;br /&gt;
IBcirc = struct_of_arrays_2_struct_array(IBcirc);&lt;br /&gt;
%xp.shade_region( PP(IBcirc) ; fillcolor=photon1,width=0);&lt;br /&gt;
xp.plot( PP(struct_of_arrays_2_struct_array(IB)[-1]) ; sym=&amp;quot;circle&amp;quot;, color=photon1,fill, size=0.3*R);&lt;br /&gt;
&lt;br /&gt;
% Arrow between k and photon1 tratecory indicating b&lt;br /&gt;
IB2.z += 0.7*deltap;&lt;br /&gt;
IB2 = vector_rotate( IB2, ey, i );&lt;br /&gt;
xp.plot( PP(IB2) ; line=0 , forward_arrow, backward_arrow, depth=150 );&lt;br /&gt;
xp.xylabel( PP(vector( mean(IB2.x), mean(IB2.y), mean(IB2.z) )), &amp;quot;$b$&amp;quot;R, -.4, -.4 );&lt;br /&gt;
&lt;br /&gt;
% Line in OP from center to impact point 2&lt;br /&gt;
variable _IB = -_b*vector( [0,1], PI/2+[0,PI/2-atan2(crho,srho)], PI/2*[1,1] ; sph );&lt;br /&gt;
_IB.z += deltap;&lt;br /&gt;
_IB = vector_rotate( _IB, ey, i );&lt;br /&gt;
xp.plot( PP(_IB) ; line=1,color=obsplane );&lt;br /&gt;
% Projected circle at the impact point 1&lt;br /&gt;
variable _IBcirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
_IBcirc.z += deltap;&lt;br /&gt;
_IBcirc = vector_rotate( _IBcirc, ey, i );&lt;br /&gt;
_IBcirc += struct_of_arrays_2_struct_array(_IB)[-1] - struct_of_arrays_2_struct_array(_IB)[0];&lt;br /&gt;
_IBcirc = struct_of_arrays_2_struct_array(_IBcirc);&lt;br /&gt;
%xp.shade_region( PP(_IBcirc) ; fillcolor=photon2,width=0);&lt;br /&gt;
xp.plot( PP(struct_of_arrays_2_struct_array(_IB)[-1]) ; sym=&amp;quot;circle&amp;quot;, color=photon2,fill, size=0.3*R);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% RHO&lt;br /&gt;
variable rhoc = 0.3*R*vector( [1:1:#N], PI/2+[0:PI/2-atan2(crho,srho):#N], PI/2*[1:1:#N] ; sph );&lt;br /&gt;
rhoc.z += deltap;&lt;br /&gt;
rhoc = vector_rotate( rhoc, ey, i );&lt;br /&gt;
xp.plot( PP(rhoc) ; line=0,color=obsplane );&lt;br /&gt;
xp.xylabel( PP(vector( mean(rhoc.x), mean(rhoc.y), mean(rhoc.z) )), &amp;quot;$\rho$&amp;quot;R, -.4, -.8;color=obsplane );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([R,deltap]*k) ; line=2, width=1 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% inclination&lt;br /&gt;
variable ic = GC( ez, k );&lt;br /&gt;
xp.plot( PP(0.18*ic) );&lt;br /&gt;
xp.xylabel( PP(0.12*vector( mean(ic.x), mean(ic.y), mean(ic.z) )), &amp;quot;$i$&amp;quot;R );&lt;br /&gt;
&lt;br /&gt;
% PSI&lt;br /&gt;
variable pc = GC( n, k );&lt;br /&gt;
xp.plot( PP(0.42*pc) ; color=photon1, depth=50);&lt;br /&gt;
xp.xylabel( PP(0.35*vector( mean(pc.x), mean(pc.y), mean(pc.z) )), &amp;quot;$\varPsi$&amp;quot;R, -.5, 0; color=photon1 );&lt;br /&gt;
&lt;br /&gt;
variable _pc = GC( n, k ; R);&lt;br /&gt;
xp.plot( PP(0.33*_pc) ; color=photon2, depth=150 );&lt;br /&gt;
xp.xylabel( PP(1.*vector( mean(_pc.x), mean(_pc.y), mean(_pc.z) )), &amp;quot;$\varPsi^*$&amp;quot;R, -1.8, 0 ; color=photon2);&lt;br /&gt;
&lt;br /&gt;
% Periastron&lt;br /&gt;
variable _per = _rp*vector_rotate( unit_vector(n), crossprod(k,n), _psi-_pp ); &lt;br /&gt;
variable _pper = GC( _per, k);&lt;br /&gt;
xp.plot( PP([0,1]*_per) ; color=photon2 );&lt;br /&gt;
xp.xylabel( PP(0.6*_per), &amp;quot;$r_\mathrm{p}$&amp;quot;R, .7, .0 ; color=photon2);&lt;br /&gt;
xp.plot( PP(0.29*_pper) ; color=photon2, depth=150 );&lt;br /&gt;
xp.xylabel( PP(0.25*vector( mean(_pper.x), mean(_pper.y), mean(_pper.z) )), &amp;quot;$\varPsi_\mathrm{p}$&amp;quot;R, .25, .0 ; color=photon2);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% Emission point: R, n &amp;amp; help lines&lt;br /&gt;
xp.plot( PP([0,1]*R*n) ; line=1 );&lt;br /&gt;
xp.xylabel( PP(0.5*R*n), &amp;quot;$R$&amp;quot;R, .5, .5 );&lt;br /&gt;
xp.plot( PP([1,1.2*s]*R*n) );&lt;br /&gt;
xp.xylabel( PP(1.2*ls*R*n), &amp;quot;$\vec{n}$&amp;quot;R, -1,0 );&lt;br /&gt;
xp.plot( PP([1,1.2*s]*R*n); forward_arrow=ARROW );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP(ncirc) ; line=2 );&lt;br /&gt;
xp.plot( PP(nline) ; line=2 );&lt;br /&gt;
xp.plot( PP(kncirc); line=1 );&lt;br /&gt;
xp.plot( PP(nkcirc); line=1 );&lt;br /&gt;
&lt;br /&gt;
variable Scirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
Scirc.z += R;&lt;br /&gt;
Scirc = vector_rotate( Scirc, unit_vector(crossprod(ez,n)), theta );&lt;br /&gt;
Scirc = struct_of_arrays_2_struct_array(Scirc);&lt;br /&gt;
%xp.shade_region( PP(Scirc) ; fillcolor=&amp;quot;black&amp;quot;,width=0);&lt;br /&gt;
xp.plot( PP(R*n)  ; sym=&amp;quot;circle&amp;quot;, fill, size=0.3*R, depth=40 );&lt;br /&gt;
&lt;br /&gt;
% phi&lt;br /&gt;
variable phic = vector( 0.13*[R:R:#N], [0:phi:#N], [PI/2.:PI/2:#N]; sph );&lt;br /&gt;
xp.plot( PP(phic) );&lt;br /&gt;
xp.xylabel( PP(vector( mean(phic.x), mean(phic.y), mean(phic.z) )), &amp;quot;$\phi$&amp;quot;R, 1.2, -.1 );&lt;br /&gt;
&lt;br /&gt;
% theta&lt;br /&gt;
variable tc = vector( 0.6*[R:R:#N], [phi:phi:#N], [0:theta:#N]; sph );&lt;br /&gt;
xp.plot( PP(tc) );&lt;br /&gt;
xp.xylabel( PP(0.8*vector( mean(tc.x), mean(tc.y), mean(tc.z) )), &amp;quot;$\theta$&amp;quot;R, -.1,-.5 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% photon&lt;br /&gt;
xp.plot( PP(R*[n,n+(s-1)*k0]) ; line=0 , depth=40);&lt;br /&gt;
xp.xylabel( PP(R*(n+(ls-1)*k0)), &amp;quot;$\vec{k}_0$&amp;quot;R, 1.6, .6; depth=40 );&lt;br /&gt;
xp.plot( PP(R*[n,n+(s-1)*k0]); forward_arrow=ARROW, depth=40);&lt;br /&gt;
&lt;br /&gt;
% alpha&lt;br /&gt;
variable ac = GC( k0, n );&lt;br /&gt;
xp.plot( PP(0.2*ac+R*n) );&lt;br /&gt;
xp.xylabel( PP(R*n+0.13*vector( mean(ac.x), mean(ac.y), mean(ac.z) )), &amp;quot;$\alpha$&amp;quot;R );&lt;br /&gt;
&lt;br /&gt;
% trace&lt;br /&gt;
variable t1 = PT();&lt;br /&gt;
variable t1ind = where( vector_norm(t1) &amp;lt;= abs(vector(IB.x[-1],IB.y[-1],IB.z[-1])) );&lt;br /&gt;
xp.plot( PP(struct_filter( t1, t1ind ; copy ) ) ; color=photon1, depth=50, width=3 );&lt;br /&gt;
xp.plot( PP(struct_filter( t1, complement([0:length(t1ind)-1],t1ind) ; copy )); color=photon1, depth=30, line=1 );&lt;br /&gt;
variable t2 = _PT();&lt;br /&gt;
variable t2ind = where( vector_norm(t2) &amp;lt;= abs(vector(_IB.x[-1],_IB.y[-1],_IB.z[-1])) );&lt;br /&gt;
xp.plot( PP(struct_filter( t2, t2ind ; copy ) ) ; color=photon2, line=1,depth=250, width=3 );&lt;br /&gt;
xp.plot( PP(struct_filter( t2, complement([0:length(t2ind)-1],t2ind) ; copy ) ); color=photon2, depth=30, line=1 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% FILL OBSERVER PLANE&lt;br /&gt;
variable fill1 = vector([kncirc.x,IB.x[[0,1]],struct_filter( t1, t1ind ; copy ).x],&lt;br /&gt;
			[kncirc.y,IB.y[[0,1]],struct_filter( t1, t1ind ; copy ).y],&lt;br /&gt;
			[kncirc.z,IB.z[[0,1]],struct_filter( t1, t1ind ; copy ).z]&lt;br /&gt;
		       );&lt;br /&gt;
variable _fill1 = vector([0,IB.x[[0,1]],struct_filter( t1, t1ind ; copy ).x],&lt;br /&gt;
			 [0,IB.y[[0,1]],struct_filter( t1, t1ind ; copy ).y],&lt;br /&gt;
			 [0,IB.z[[0,1]],struct_filter( t1, t1ind ; copy ).z]&lt;br /&gt;
			);&lt;br /&gt;
variable fill2 = vector([nkcirc.x,_IB.x[[0,1]],struct_filter( t2, t2ind ; copy ).x],&lt;br /&gt;
			[nkcirc.y,_IB.y[[0,1]],struct_filter( t2, t2ind ; copy ).y],&lt;br /&gt;
			[nkcirc.z,_IB.z[[0,1]],struct_filter( t2, t2ind ; copy ).z]&lt;br /&gt;
		       );&lt;br /&gt;
variable _fill2 = vector([0,_IB.x[[0,1]],struct_filter( t2, t2ind ; copy ).x],&lt;br /&gt;
			 [0,_IB.y[[0,1]],struct_filter( t2, t2ind ; copy ).y],&lt;br /&gt;
			 [0,_IB.z[[0,1]],struct_filter( t2, t2ind ; copy ).z]&lt;br /&gt;
			);&lt;br /&gt;
xp.shade_region( PP(_fill1); fillcolor=photon1, fill=36,depth=250, width=0 );&lt;br /&gt;
xp.shade_region( PP(_fill2); fillcolor=photon2, fill=36,depth=250, width=0 );&lt;br /&gt;
		  &lt;br /&gt;
&lt;br /&gt;
xp.render(&amp;quot;geo.pdf&amp;quot;);&lt;br /&gt;
xp.render(&amp;quot;geo.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1547</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1547"/>
		<updated>2018-05-18T09:12:45Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Calculating and plotting orbits in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=Lin log axis (xfig example)]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=Object3dsimple (xfig example)]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=3D orbit plots (xfig example)]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1546</id>
		<title>3D orbit plots (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1546"/>
		<updated>2018-05-18T09:11:22Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page 3D orbit plots (xfig example to 3D orbit plots (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:orbit3d.png|380px]]&lt;br /&gt;
&lt;br /&gt;
The projection and handling of plotting in 3D is very similar to the examples [[Object3dsimple (xfig example)|Plotting in 3D (simple)]] and [[Object3d (xfig example)|Plotting in 3D]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%-*- mode: fold; mode: slang -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% we will produce two plots: one showing the orbital plane in the&lt;br /&gt;
% context of the tangent plane of the sky and, thus, defining the&lt;br /&gt;
% orbital elements. the second one defines the Be disk geometry&lt;br /&gt;
% with respect to the orbital plane only, i.e, *without* the&lt;br /&gt;
% tangent plane of the sky and the orbital elements.&lt;br /&gt;
&lt;br /&gt;
% in the coordinate system used here, the tangent plane of the sky&lt;br /&gt;
% is defined as the xy-plane and the z-axis points away from Earth.&lt;br /&gt;
% that is with a camera inclination and roll angle of zero, we are&lt;br /&gt;
% looking directly onto the tangent plane of the sky. note that the&lt;br /&gt;
% x and y axis points north and east, respectively, i.e., the xy&lt;br /&gt;
% axis are flipped to ensure a right handed coordinate system.&lt;br /&gt;
&lt;br /&gt;
xfig_add_latex_package(&amp;quot;bm&amp;quot;); % for bold and italic fonts in mathmode&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\let\mathbfit\bm&amp;quot;R); % alias for MNRAS&lt;br /&gt;
xfig_set_font_style(NULL); % no bold face anywhere&lt;br /&gt;
&lt;br /&gt;
%%% implement camera object %{{{&lt;br /&gt;
&lt;br /&gt;
% set up the camera view port&lt;br /&gt;
private define _xfig_camera_setup(s, incl, zrot, roll) {&lt;br /&gt;
  s.camera_data.incl = incl;&lt;br /&gt;
  s.camera_data.zrot = zrot;&lt;br /&gt;
  s.camera_data.roll = roll;&lt;br /&gt;
  % update camera vectors&lt;br /&gt;
  s.camera_data.cx = vector_rotate(&lt;br /&gt;
    vector(1,0,0), vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  s.camera_data.cy = vector_rotate(&lt;br /&gt;
    vector_rotate(vector(0,1,0), vector(1,0,0), s.camera_data.incl*PI/180),&lt;br /&gt;
    vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  % optical axis of the camera&lt;br /&gt;
  variable camaxis = crossprod(s.camera_data.cx, s.camera_data.cy);&lt;br /&gt;
  % rotate around this vector&lt;br /&gt;
  s.camera_data.cx = vector_rotate(s.camera_data.cx, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
  s.camera_data.cy = vector_rotate(s.camera_data.cy, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add polygons to the plot&lt;br /&gt;
private define _xfig_camera_plot_polygon(s, v) {&lt;br /&gt;
  % add starting point [0,0,0]&lt;br /&gt;
  if (length(v.x) == 1 &amp;amp;&amp;amp; not qualifier_exists(&amp;quot;skiporigin&amp;quot;)) {&lt;br /&gt;
    v = struct_copy(v);&lt;br /&gt;
    v.x = [0, v.x];&lt;br /&gt;
    v.y = [0, v.y];&lt;br /&gt;
    v.z = [0, v.z];&lt;br /&gt;
  }&lt;br /&gt;
  % add to list&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add shaded region to the plot&lt;br /&gt;
private define _xfig_camera_shade_region(s, v) {&lt;br /&gt;
  % add to the same list as for polygons, but set a qualifier&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, struct_combine(&lt;br /&gt;
    __qualifiers, struct { _camera_shade_region }&lt;br /&gt;
  ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add label to the plot&lt;br /&gt;
private define _xfig_camera_xyzlabel() {&lt;br /&gt;
  variable s, v, l, dx = 0, dy = 0;&lt;br /&gt;
  switch (_NARGS)&lt;br /&gt;
    { case 3: (s, v, l) = (); }&lt;br /&gt;
    { case 5: (s, v, l, dx, dy) = (); }&lt;br /&gt;
  list_append(s.camera_data.labels, v);&lt;br /&gt;
  list_append(s.camera_data.labels, l);&lt;br /&gt;
  list_append(s.camera_data.labels, [dx, dy]);&lt;br /&gt;
  list_append(s.camera_data.labels_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% render polygons&lt;br /&gt;
private define _xfig_camera_render_polygons(s, pl) {&lt;br /&gt;
  % loop over polygons&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, length(s.camera_data.polygons)-1, 1) {&lt;br /&gt;
    % shade region&lt;br /&gt;
    if (s.camera_data.polygons_qualifiers[i] != NULL &amp;amp;&amp;amp;&lt;br /&gt;
	struct_field_exists(s.camera_data.polygons_qualifiers[i], &amp;quot;_camera_shade_region&amp;quot;)) {&lt;br /&gt;
      pl.shade_region(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    % plot line&lt;br /&gt;
    else {&lt;br /&gt;
      pl.plot(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  % loop over labels&lt;br /&gt;
  _for i (0, length(s.camera_data.labels)/3-1, 1) {&lt;br /&gt;
    pl.xylabel(&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cx),&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cy),&lt;br /&gt;
      s.camera_data.labels[3*i+1], __push_array(s.camera_data.labels[3*i+2]);;&lt;br /&gt;
      s.camera_data.labels_qualifiers[i]&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% new render function&lt;br /&gt;
private define _xfig_camera_render(s, file) {&lt;br /&gt;
  % first render all polygons&lt;br /&gt;
  s.camera_render_polygons(s, s);&lt;br /&gt;
  % default xfig render&lt;br /&gt;
  (@(s.camera_data.camera_xfig_render))(file);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% return an xfig_plot_new with a camera object included&lt;br /&gt;
define xfig_new_camera_plot() {&lt;br /&gt;
  variable args = __pop_args(_NARGS);&lt;br /&gt;
  variable s = struct_combine(&lt;br /&gt;
    struct {&lt;br /&gt;
      camera_setup = &amp;amp;_xfig_camera_setup,&lt;br /&gt;
      camera_plot_polygon = &amp;amp;_xfig_camera_plot_polygon,&lt;br /&gt;
      camera_xyzlabel = &amp;amp;_xfig_camera_xyzlabel,&lt;br /&gt;
      camera_shade_region = &amp;amp;_xfig_camera_shade_region,&lt;br /&gt;
      camera_render_polygons = &amp;amp;_xfig_camera_render_polygons,&lt;br /&gt;
      camera_data = struct { % camera data&lt;br /&gt;
	polygons = list_new, % list of polygons (Vector_Type[]) to plot&lt;br /&gt;
	polygons_qualifiers = list_new, % plot qualifiers for each polygon&lt;br /&gt;
	labels = list_new, % list of labels (Vector_Type[], String_Type)&lt;br /&gt;
	labels_qualifiers = list_new, % qualifiers for each label&lt;br /&gt;
	incl, zrot, roll, % camera inclination (around x), rotation (around z), and roll (around the optical axis)&lt;br /&gt;
	cx, cy, % unit vectors&lt;br /&gt;
        camera_xfig_render % remember xfig renderer function&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    xfig_plot_new(__push_args(args))&lt;br /&gt;
  );&lt;br /&gt;
  % default camera setup&lt;br /&gt;
  s.camera_setup(0, 0, 0);&lt;br /&gt;
  % remember xfig renderer function and then overwrite&lt;br /&gt;
  s.camera_data.camera_xfig_render = s.render;&lt;br /&gt;
  s.render = &amp;amp;_xfig_camera_render;&lt;br /&gt;
  &lt;br /&gt;
  return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% useful functions %{{{&lt;br /&gt;
&lt;br /&gt;
% function to split a closed line given as an array of vectors using indices.&lt;br /&gt;
% ensure that the returned arrays of vectors define a line without breaks&lt;br /&gt;
define vecsplitsort(r, n) {&lt;br /&gt;
  variable len = vector_norm(vector(diff(r.x[n]), diff(r.y[n]), diff(r.z[n])));&lt;br /&gt;
  variable i = @n;&lt;br /&gt;
  if (max(len) &amp;gt; 2*median(len)) {&lt;br /&gt;
    i = shift(n, where_max(len)+1);&lt;br /&gt;
  }&lt;br /&gt;
  return vector(r.x[i], r.y[i], r.z[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function to shift, incline, and rotate a vector into the orbital plane&lt;br /&gt;
variable a, incl, omega, nOrb, ecc;&lt;br /&gt;
define vec2orbit(x) {&lt;br /&gt;
  % translate according to the focal point (center of mass)&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;notrans&amp;quot;)) {&lt;br /&gt;
    x += vector(-sqrt(a^2 - (a*(1-ecc))^2), 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
  % incline&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noincl&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(x, vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
  }&lt;br /&gt;
  % rotate&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noomega&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(&lt;br /&gt;
      x, nOrb, omega * PI/180&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
  return x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% calculates an arch between the vectors v1 and v2 with radius r&lt;br /&gt;
define arch(v1, v2, r) {&lt;br /&gt;
  v1 *= (1./vector_norm(v1));&lt;br /&gt;
  v2 *= (1./vector_norm(v2));&lt;br /&gt;
  % angle between the vectors and rotation axis, i.e, the normal&lt;br /&gt;
  variable angle = acos(dotprod(v1, v2));&lt;br /&gt;
  variable axis = crossprod(v1, v2);&lt;br /&gt;
  axis *= (1./vector_norm(axis));&lt;br /&gt;
  if (qualifier_exists(&amp;quot;reverse&amp;quot;)) {&lt;br /&gt;
    axis *= -1;&lt;br /&gt;
    angle = 2*PI - angle;&lt;br /&gt;
  }&lt;br /&gt;
  % calculate arch by rotating v1 around the axis&lt;br /&gt;
  variable nphi = int(1000*angle/2/PI);&lt;br /&gt;
  variable step = angle / nphi;&lt;br /&gt;
  variable arch = Vector_Type[nphi];&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, nphi-1, 1) {&lt;br /&gt;
    arch[i] = r*vector_rotate(v1, axis, step*i);&lt;br /&gt;
  }&lt;br /&gt;
  return merge_struct_arrays(arch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% define geometry %{{{&lt;br /&gt;
&lt;br /&gt;
% orbit parameters&lt;br /&gt;
variable ecc = .05, a = 300; % = 1 - b/a&lt;br /&gt;
variable omega = -50, incl = 30.;&lt;br /&gt;
% Be disk parameters&lt;br /&gt;
variable inclDisk = -50;&lt;br /&gt;
variable omegaDisk = 180+28;&lt;br /&gt;
variable radDisk = 150;&lt;br /&gt;
% neutron star's orbital plase&lt;br /&gt;
variable phiNS = .9;&lt;br /&gt;
&lt;br /&gt;
% define normal vectors of the reference frame (plotted later)&lt;br /&gt;
% (note that x and y are flipped, see abow)&lt;br /&gt;
variable ex = vector(0,1,0);&lt;br /&gt;
variable ey = vector(1,0,0);&lt;br /&gt;
variable ez = vector(0,0,1);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable n, m;&lt;br /&gt;
%%% calculation of orbit, disk, and neutron star position and disk %{{{&lt;br /&gt;
&lt;br /&gt;
% calculate orbit&lt;br /&gt;
variable nOrb = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
variable phi = [0:2*PI:#1000];&lt;br /&gt;
variable rOrb = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rOrb.x, rOrb.y) = ellipse(a, a*(1-ecc), 0, phi);&lt;br /&gt;
rOrb = vec2orbit(rOrb);&lt;br /&gt;
&lt;br /&gt;
% calculate Be disk&lt;br /&gt;
variable rDisk = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rDisk.x, rDisk.y) = ellipse(radDisk, radDisk, 0, phi);&lt;br /&gt;
rDisk = vector_rotate(rDisk, vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
rDisk = vector_rotate(rDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
% disk normal&lt;br /&gt;
variable nDisk = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
nDisk = vector_rotate(nDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
&lt;br /&gt;
% neutron star position&lt;br /&gt;
variable n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
variable rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable H = 12; % plot heights (width set individually)&lt;br /&gt;
%%% first xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl1 = xfig_new_camera_plot(8.,H);&lt;br /&gt;
pl1.camera_setup(40, 40, 0);&lt;br /&gt;
variable xmin = -315, ymin = -350, wlen = 850;&lt;br /&gt;
variable WH = 1.*pl1.plot_data.plot_height/pl1.plot_data.plot_width;&lt;br /&gt;
pl1.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl1.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl1.xylabel(.01, .99, &amp;quot;a)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
% define colors&lt;br /&gt;
variable orbColor = &amp;quot;#ffca57&amp;quot;;&lt;br /&gt;
variable tgColor = &amp;quot;#ffff71&amp;quot;;&lt;br /&gt;
% xyz-axes&lt;br /&gt;
variable xyzlen = 250.; % arrow length&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ex; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ey; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ex, &amp;quot;x&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ey, &amp;quot;y&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, n); depth = 85);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, m); line = 2, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, n); color = orbColor, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, m); color = orbColor, depth = 95);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.38); copy);&lt;br /&gt;
pl1.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, .3, .2; size = &amp;quot;small&amp;quot;, rotate = -25);&lt;br /&gt;
% plot tangent plane of the sky&lt;br /&gt;
variable tg = vector(&lt;br /&gt;
  -390*[1,0,0,1,1] + 320*[0,1,1,0,0],&lt;br /&gt;
  -250*[1,1,0,0,1] + 370*[0,0,1,1,0],&lt;br /&gt;
  [0,0,0,0,0]&lt;br /&gt;
);&lt;br /&gt;
pl1.camera_plot_polygon(tg; depth = 90);&lt;br /&gt;
pl1.camera_shade_region(tg; color = tgColor, depth = 90);&lt;br /&gt;
n = -28;&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;tangent plane&amp;quot;R, .55, -.7; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;of the sky&amp;quot;R, .6, -.2; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
% intersection of the planes&lt;br /&gt;
n = wherefirstmin(abs(rOrb.y + rOrb.z));&lt;br /&gt;
pl1.camera_plot_polygon(vector(rOrb.x[n], 0, 0); line = 1);&lt;br /&gt;
% inclination angle&lt;br /&gt;
  % find intersection of the orbit with the x-axis&lt;br /&gt;
n = where_min(abs(abs(rOrb.y) + rOrb.z)) + [-1,0,1];&lt;br /&gt;
m = interpol_points(0, rOrb.y[n], rOrb.x[n]);&lt;br /&gt;
pl1.camera_plot_polygon(vector([m,m], [0,-80], [0,0]); depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(vector(m, -60, 0), &amp;quot;$i$&amp;quot;, .75, -.1);&lt;br /&gt;
  % find the point on the orbit, which at a certain distance from this intersection point&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0 and rOrb.x &amp;gt; 0);&lt;br /&gt;
n = n[where_min(abs(vector_norm(struct_filter(rOrb, n; copy) - vector(m, 0, 0)) - 80))];&lt;br /&gt;
  % connect the intersection point and the orbit with an arch of the same length as the distance&lt;br /&gt;
pl1.camera_plot_polygon(vector(m, 0, 0) + arch(&lt;br /&gt;
    vector(0, -1, 0), vector(rOrb.x[n] - m, rOrb.y[n], rOrb.z[n]), 80&lt;br /&gt;
));&lt;br /&gt;
% periastron and apastron position&lt;br /&gt;
variable pstrn = vec2orbit(vector(a, 0, 0));&lt;br /&gt;
variable astrn = vec2orbit(vector(-a, 0, 0));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, astrn]); line = 1, depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, -.5, .5);&lt;br /&gt;
pl1.camera_xyzlabel(astrn, &amp;quot;A&amp;quot;, .3, -.8);&lt;br /&gt;
% prism supporting the 3D position of the periastron &lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, pstrn-vector(0,pstrn.y,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(pstrn.x,0,pstrn.z), vector(pstrn.x,0,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(vector(pstrn.x, 0, pstrn.z));&lt;br /&gt;
% same for the apastron&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([astrn, astrn-vector(0,astrn.y,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(astrn.x,0,astrn.z), vector(astrn.x,0,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(vector(astrn.x, 0, astrn.z); line = 2);&lt;br /&gt;
% omega angle&lt;br /&gt;
n = arch(vector(1, 0, 0), pstrn, 85);&lt;br /&gt;
m = length(n.x)/2; % vector to half of the arch (-&amp;gt; label)&lt;br /&gt;
pl1.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.8*vector(n.x[m], n.y[m], n.z[m]), &amp;quot;$\omega$&amp;quot;R, 0, -.4);&lt;br /&gt;
% neutrons star position&lt;br /&gt;
pl1.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.5*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, -.6, .5);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl1.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
pl1.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
variable rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl1.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, .6, -.2; rotate = -55);&lt;br /&gt;
pl1.camera_xyzlabel(.5*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, .5, -.8);&lt;br /&gt;
% line of sight&lt;br /&gt;
pl1.camera_plot_polygon(rNS - vector([0,0], [0,0], [0,230]); color = &amp;quot;blue&amp;quot;, forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;line of sight&amp;quot;R, .85, .6; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;to Earth&amp;quot;R, .85, 1.2; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% second xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl2 = xfig_new_camera_plot(10,H);&lt;br /&gt;
variable incCam = 20; % camera inclination with respect to the orbital plane&lt;br /&gt;
pl2.camera_setup(incl-90+incCam, 0, 0); % incl-90 -&amp;gt; edge on&lt;br /&gt;
% rotate the camera around the orbital normal&lt;br /&gt;
variable rotCam = 160;&lt;br /&gt;
pl2.camera_data.cx = vector_rotate(pl2.camera_data.cx, nOrb, rotCam*PI/180);&lt;br /&gt;
pl2.camera_data.cy = vector_rotate(pl2.camera_data.cy, nOrb, rotCam*PI/180);&lt;br /&gt;
variable xmin = -260, ymin = -270, wlen = 500;&lt;br /&gt;
variable WH = 1.*pl2.plot_data.plot_height/pl2.plot_data.plot_width;&lt;br /&gt;
pl2.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl2.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl2.xylabel(.05, .87, &amp;quot;b)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
xyzlen = 200;&lt;br /&gt;
pl2.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% define colors&lt;br /&gt;
variable diskColor = &amp;quot;skyblue&amp;quot;;&lt;br /&gt;
% z-axis projected onto the orbital plane&lt;br /&gt;
variable zdisk = xyzlen*(ez - (ez*nOrb)*nOrb);&lt;br /&gt;
%zdisk *= (1./vector_norm(zdisk));&lt;br /&gt;
pl2.camera_plot_polygon(zdisk; color = &amp;quot;red&amp;quot;, line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([xyzlen*ez, zdisk]); line = 2, color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
pl2.camera_plot_polygon(rOrb; depth = 75);&lt;br /&gt;
pl2.camera_shade_region(rOrb; color = orbColor, depth = 100);&lt;br /&gt;
n = where(.837 &amp;lt; phi/2/PI &amp;lt; .95); % nasty hack for the dotted line behin the Be disk&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n; copy); depth = 65, line = 2);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.21); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, 0, -.3; size = &amp;quot;small&amp;quot;, rotate = -19);&lt;br /&gt;
pl2.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, .5, -.5);&lt;br /&gt;
% plot Be disk&lt;br /&gt;
n = where(dotprod(rDisk, nOrb) &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, n); depth = 70);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, m); line = 2, depth = 85);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, n); color = diskColor, depth = 70);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, m); color = diskColor, depth = 105);&lt;br /&gt;
n = struct_filter(rDisk, int(length(rDisk.x)*.15); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;Be disk&amp;quot;R, 0, .5; size = &amp;quot;small&amp;quot;, rotate = -23);&lt;br /&gt;
% highest point of the disk above the orbit&lt;br /&gt;
variable hline = vector_rotate(vector(0, 1, 0), vector(1, 0, 0), (incl+inclDisk)*PI/180);&lt;br /&gt;
hline = radDisk*vector_rotate(hline, nOrb, omegaDisk*PI/180);&lt;br /&gt;
pl2.camera_plot_polygon(hline; line = 3);&lt;br /&gt;
pl2.camera_xyzlabel(hline*1.1, &amp;quot;H&amp;quot;);&lt;br /&gt;
pl2.camera_plot_polygon(hline - (hline*nOrb)*nOrb; line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([hline, hline - (hline*nOrb)*nOrb]); line = 2);&lt;br /&gt;
% omega disk&lt;br /&gt;
n = arch(zdisk, hline - (hline*nOrb)*nOrb, 40; reverse);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.5*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\theta$&amp;quot;R, 0, .1);&lt;br /&gt;
% disk inclination&lt;br /&gt;
n = arch(hline, hline - (hline*nOrb)*nOrb, 60);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(.7*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\delta$&amp;quot;R, .2, -.2);&lt;br /&gt;
% neutrons star position (new one compared to plot 1)&lt;br /&gt;
phiNS = .09;&lt;br /&gt;
n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.6*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, 1.1, .9);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl2.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl2.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, 0, -.3; rotate = 39);&lt;br /&gt;
pl2.camera_xyzlabel(.9*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, 0, -.7);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
% combine and render&lt;br /&gt;
% (note: the camera plot renderes the lines only when .render is called.&lt;br /&gt;
%        thus we need to call these first, which is not a convenient way...)&lt;br /&gt;
pl1.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
pl2.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
xfig_new_hbox_compound(pl1,pl2).render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1545</id>
		<title>3D orbit plots (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1545"/>
		<updated>2018-05-18T09:11:10Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page 3D orbit plots to 3D orbit plots (xfig example without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:orbit3d.png|380px]]&lt;br /&gt;
&lt;br /&gt;
The projection and handling of plotting in 3D is very similar to the examples [[Object3dsimple (xfig example)|Plotting in 3D (simple)]] and [[Object3d (xfig example)|Plotting in 3D]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%-*- mode: fold; mode: slang -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% we will produce two plots: one showing the orbital plane in the&lt;br /&gt;
% context of the tangent plane of the sky and, thus, defining the&lt;br /&gt;
% orbital elements. the second one defines the Be disk geometry&lt;br /&gt;
% with respect to the orbital plane only, i.e, *without* the&lt;br /&gt;
% tangent plane of the sky and the orbital elements.&lt;br /&gt;
&lt;br /&gt;
% in the coordinate system used here, the tangent plane of the sky&lt;br /&gt;
% is defined as the xy-plane and the z-axis points away from Earth.&lt;br /&gt;
% that is with a camera inclination and roll angle of zero, we are&lt;br /&gt;
% looking directly onto the tangent plane of the sky. note that the&lt;br /&gt;
% x and y axis points north and east, respectively, i.e., the xy&lt;br /&gt;
% axis are flipped to ensure a right handed coordinate system.&lt;br /&gt;
&lt;br /&gt;
xfig_add_latex_package(&amp;quot;bm&amp;quot;); % for bold and italic fonts in mathmode&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\let\mathbfit\bm&amp;quot;R); % alias for MNRAS&lt;br /&gt;
xfig_set_font_style(NULL); % no bold face anywhere&lt;br /&gt;
&lt;br /&gt;
%%% implement camera object %{{{&lt;br /&gt;
&lt;br /&gt;
% set up the camera view port&lt;br /&gt;
private define _xfig_camera_setup(s, incl, zrot, roll) {&lt;br /&gt;
  s.camera_data.incl = incl;&lt;br /&gt;
  s.camera_data.zrot = zrot;&lt;br /&gt;
  s.camera_data.roll = roll;&lt;br /&gt;
  % update camera vectors&lt;br /&gt;
  s.camera_data.cx = vector_rotate(&lt;br /&gt;
    vector(1,0,0), vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  s.camera_data.cy = vector_rotate(&lt;br /&gt;
    vector_rotate(vector(0,1,0), vector(1,0,0), s.camera_data.incl*PI/180),&lt;br /&gt;
    vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  % optical axis of the camera&lt;br /&gt;
  variable camaxis = crossprod(s.camera_data.cx, s.camera_data.cy);&lt;br /&gt;
  % rotate around this vector&lt;br /&gt;
  s.camera_data.cx = vector_rotate(s.camera_data.cx, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
  s.camera_data.cy = vector_rotate(s.camera_data.cy, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add polygons to the plot&lt;br /&gt;
private define _xfig_camera_plot_polygon(s, v) {&lt;br /&gt;
  % add starting point [0,0,0]&lt;br /&gt;
  if (length(v.x) == 1 &amp;amp;&amp;amp; not qualifier_exists(&amp;quot;skiporigin&amp;quot;)) {&lt;br /&gt;
    v = struct_copy(v);&lt;br /&gt;
    v.x = [0, v.x];&lt;br /&gt;
    v.y = [0, v.y];&lt;br /&gt;
    v.z = [0, v.z];&lt;br /&gt;
  }&lt;br /&gt;
  % add to list&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add shaded region to the plot&lt;br /&gt;
private define _xfig_camera_shade_region(s, v) {&lt;br /&gt;
  % add to the same list as for polygons, but set a qualifier&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, struct_combine(&lt;br /&gt;
    __qualifiers, struct { _camera_shade_region }&lt;br /&gt;
  ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add label to the plot&lt;br /&gt;
private define _xfig_camera_xyzlabel() {&lt;br /&gt;
  variable s, v, l, dx = 0, dy = 0;&lt;br /&gt;
  switch (_NARGS)&lt;br /&gt;
    { case 3: (s, v, l) = (); }&lt;br /&gt;
    { case 5: (s, v, l, dx, dy) = (); }&lt;br /&gt;
  list_append(s.camera_data.labels, v);&lt;br /&gt;
  list_append(s.camera_data.labels, l);&lt;br /&gt;
  list_append(s.camera_data.labels, [dx, dy]);&lt;br /&gt;
  list_append(s.camera_data.labels_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% render polygons&lt;br /&gt;
private define _xfig_camera_render_polygons(s, pl) {&lt;br /&gt;
  % loop over polygons&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, length(s.camera_data.polygons)-1, 1) {&lt;br /&gt;
    % shade region&lt;br /&gt;
    if (s.camera_data.polygons_qualifiers[i] != NULL &amp;amp;&amp;amp;&lt;br /&gt;
	struct_field_exists(s.camera_data.polygons_qualifiers[i], &amp;quot;_camera_shade_region&amp;quot;)) {&lt;br /&gt;
      pl.shade_region(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    % plot line&lt;br /&gt;
    else {&lt;br /&gt;
      pl.plot(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  % loop over labels&lt;br /&gt;
  _for i (0, length(s.camera_data.labels)/3-1, 1) {&lt;br /&gt;
    pl.xylabel(&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cx),&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cy),&lt;br /&gt;
      s.camera_data.labels[3*i+1], __push_array(s.camera_data.labels[3*i+2]);;&lt;br /&gt;
      s.camera_data.labels_qualifiers[i]&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% new render function&lt;br /&gt;
private define _xfig_camera_render(s, file) {&lt;br /&gt;
  % first render all polygons&lt;br /&gt;
  s.camera_render_polygons(s, s);&lt;br /&gt;
  % default xfig render&lt;br /&gt;
  (@(s.camera_data.camera_xfig_render))(file);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% return an xfig_plot_new with a camera object included&lt;br /&gt;
define xfig_new_camera_plot() {&lt;br /&gt;
  variable args = __pop_args(_NARGS);&lt;br /&gt;
  variable s = struct_combine(&lt;br /&gt;
    struct {&lt;br /&gt;
      camera_setup = &amp;amp;_xfig_camera_setup,&lt;br /&gt;
      camera_plot_polygon = &amp;amp;_xfig_camera_plot_polygon,&lt;br /&gt;
      camera_xyzlabel = &amp;amp;_xfig_camera_xyzlabel,&lt;br /&gt;
      camera_shade_region = &amp;amp;_xfig_camera_shade_region,&lt;br /&gt;
      camera_render_polygons = &amp;amp;_xfig_camera_render_polygons,&lt;br /&gt;
      camera_data = struct { % camera data&lt;br /&gt;
	polygons = list_new, % list of polygons (Vector_Type[]) to plot&lt;br /&gt;
	polygons_qualifiers = list_new, % plot qualifiers for each polygon&lt;br /&gt;
	labels = list_new, % list of labels (Vector_Type[], String_Type)&lt;br /&gt;
	labels_qualifiers = list_new, % qualifiers for each label&lt;br /&gt;
	incl, zrot, roll, % camera inclination (around x), rotation (around z), and roll (around the optical axis)&lt;br /&gt;
	cx, cy, % unit vectors&lt;br /&gt;
        camera_xfig_render % remember xfig renderer function&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    xfig_plot_new(__push_args(args))&lt;br /&gt;
  );&lt;br /&gt;
  % default camera setup&lt;br /&gt;
  s.camera_setup(0, 0, 0);&lt;br /&gt;
  % remember xfig renderer function and then overwrite&lt;br /&gt;
  s.camera_data.camera_xfig_render = s.render;&lt;br /&gt;
  s.render = &amp;amp;_xfig_camera_render;&lt;br /&gt;
  &lt;br /&gt;
  return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% useful functions %{{{&lt;br /&gt;
&lt;br /&gt;
% function to split a closed line given as an array of vectors using indices.&lt;br /&gt;
% ensure that the returned arrays of vectors define a line without breaks&lt;br /&gt;
define vecsplitsort(r, n) {&lt;br /&gt;
  variable len = vector_norm(vector(diff(r.x[n]), diff(r.y[n]), diff(r.z[n])));&lt;br /&gt;
  variable i = @n;&lt;br /&gt;
  if (max(len) &amp;gt; 2*median(len)) {&lt;br /&gt;
    i = shift(n, where_max(len)+1);&lt;br /&gt;
  }&lt;br /&gt;
  return vector(r.x[i], r.y[i], r.z[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function to shift, incline, and rotate a vector into the orbital plane&lt;br /&gt;
variable a, incl, omega, nOrb, ecc;&lt;br /&gt;
define vec2orbit(x) {&lt;br /&gt;
  % translate according to the focal point (center of mass)&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;notrans&amp;quot;)) {&lt;br /&gt;
    x += vector(-sqrt(a^2 - (a*(1-ecc))^2), 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
  % incline&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noincl&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(x, vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
  }&lt;br /&gt;
  % rotate&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noomega&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(&lt;br /&gt;
      x, nOrb, omega * PI/180&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
  return x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% calculates an arch between the vectors v1 and v2 with radius r&lt;br /&gt;
define arch(v1, v2, r) {&lt;br /&gt;
  v1 *= (1./vector_norm(v1));&lt;br /&gt;
  v2 *= (1./vector_norm(v2));&lt;br /&gt;
  % angle between the vectors and rotation axis, i.e, the normal&lt;br /&gt;
  variable angle = acos(dotprod(v1, v2));&lt;br /&gt;
  variable axis = crossprod(v1, v2);&lt;br /&gt;
  axis *= (1./vector_norm(axis));&lt;br /&gt;
  if (qualifier_exists(&amp;quot;reverse&amp;quot;)) {&lt;br /&gt;
    axis *= -1;&lt;br /&gt;
    angle = 2*PI - angle;&lt;br /&gt;
  }&lt;br /&gt;
  % calculate arch by rotating v1 around the axis&lt;br /&gt;
  variable nphi = int(1000*angle/2/PI);&lt;br /&gt;
  variable step = angle / nphi;&lt;br /&gt;
  variable arch = Vector_Type[nphi];&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, nphi-1, 1) {&lt;br /&gt;
    arch[i] = r*vector_rotate(v1, axis, step*i);&lt;br /&gt;
  }&lt;br /&gt;
  return merge_struct_arrays(arch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% define geometry %{{{&lt;br /&gt;
&lt;br /&gt;
% orbit parameters&lt;br /&gt;
variable ecc = .05, a = 300; % = 1 - b/a&lt;br /&gt;
variable omega = -50, incl = 30.;&lt;br /&gt;
% Be disk parameters&lt;br /&gt;
variable inclDisk = -50;&lt;br /&gt;
variable omegaDisk = 180+28;&lt;br /&gt;
variable radDisk = 150;&lt;br /&gt;
% neutron star's orbital plase&lt;br /&gt;
variable phiNS = .9;&lt;br /&gt;
&lt;br /&gt;
% define normal vectors of the reference frame (plotted later)&lt;br /&gt;
% (note that x and y are flipped, see abow)&lt;br /&gt;
variable ex = vector(0,1,0);&lt;br /&gt;
variable ey = vector(1,0,0);&lt;br /&gt;
variable ez = vector(0,0,1);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable n, m;&lt;br /&gt;
%%% calculation of orbit, disk, and neutron star position and disk %{{{&lt;br /&gt;
&lt;br /&gt;
% calculate orbit&lt;br /&gt;
variable nOrb = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
variable phi = [0:2*PI:#1000];&lt;br /&gt;
variable rOrb = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rOrb.x, rOrb.y) = ellipse(a, a*(1-ecc), 0, phi);&lt;br /&gt;
rOrb = vec2orbit(rOrb);&lt;br /&gt;
&lt;br /&gt;
% calculate Be disk&lt;br /&gt;
variable rDisk = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rDisk.x, rDisk.y) = ellipse(radDisk, radDisk, 0, phi);&lt;br /&gt;
rDisk = vector_rotate(rDisk, vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
rDisk = vector_rotate(rDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
% disk normal&lt;br /&gt;
variable nDisk = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
nDisk = vector_rotate(nDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
&lt;br /&gt;
% neutron star position&lt;br /&gt;
variable n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
variable rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable H = 12; % plot heights (width set individually)&lt;br /&gt;
%%% first xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl1 = xfig_new_camera_plot(8.,H);&lt;br /&gt;
pl1.camera_setup(40, 40, 0);&lt;br /&gt;
variable xmin = -315, ymin = -350, wlen = 850;&lt;br /&gt;
variable WH = 1.*pl1.plot_data.plot_height/pl1.plot_data.plot_width;&lt;br /&gt;
pl1.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl1.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl1.xylabel(.01, .99, &amp;quot;a)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
% define colors&lt;br /&gt;
variable orbColor = &amp;quot;#ffca57&amp;quot;;&lt;br /&gt;
variable tgColor = &amp;quot;#ffff71&amp;quot;;&lt;br /&gt;
% xyz-axes&lt;br /&gt;
variable xyzlen = 250.; % arrow length&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ex; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ey; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ex, &amp;quot;x&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ey, &amp;quot;y&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, n); depth = 85);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, m); line = 2, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, n); color = orbColor, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, m); color = orbColor, depth = 95);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.38); copy);&lt;br /&gt;
pl1.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, .3, .2; size = &amp;quot;small&amp;quot;, rotate = -25);&lt;br /&gt;
% plot tangent plane of the sky&lt;br /&gt;
variable tg = vector(&lt;br /&gt;
  -390*[1,0,0,1,1] + 320*[0,1,1,0,0],&lt;br /&gt;
  -250*[1,1,0,0,1] + 370*[0,0,1,1,0],&lt;br /&gt;
  [0,0,0,0,0]&lt;br /&gt;
);&lt;br /&gt;
pl1.camera_plot_polygon(tg; depth = 90);&lt;br /&gt;
pl1.camera_shade_region(tg; color = tgColor, depth = 90);&lt;br /&gt;
n = -28;&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;tangent plane&amp;quot;R, .55, -.7; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;of the sky&amp;quot;R, .6, -.2; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
% intersection of the planes&lt;br /&gt;
n = wherefirstmin(abs(rOrb.y + rOrb.z));&lt;br /&gt;
pl1.camera_plot_polygon(vector(rOrb.x[n], 0, 0); line = 1);&lt;br /&gt;
% inclination angle&lt;br /&gt;
  % find intersection of the orbit with the x-axis&lt;br /&gt;
n = where_min(abs(abs(rOrb.y) + rOrb.z)) + [-1,0,1];&lt;br /&gt;
m = interpol_points(0, rOrb.y[n], rOrb.x[n]);&lt;br /&gt;
pl1.camera_plot_polygon(vector([m,m], [0,-80], [0,0]); depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(vector(m, -60, 0), &amp;quot;$i$&amp;quot;, .75, -.1);&lt;br /&gt;
  % find the point on the orbit, which at a certain distance from this intersection point&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0 and rOrb.x &amp;gt; 0);&lt;br /&gt;
n = n[where_min(abs(vector_norm(struct_filter(rOrb, n; copy) - vector(m, 0, 0)) - 80))];&lt;br /&gt;
  % connect the intersection point and the orbit with an arch of the same length as the distance&lt;br /&gt;
pl1.camera_plot_polygon(vector(m, 0, 0) + arch(&lt;br /&gt;
    vector(0, -1, 0), vector(rOrb.x[n] - m, rOrb.y[n], rOrb.z[n]), 80&lt;br /&gt;
));&lt;br /&gt;
% periastron and apastron position&lt;br /&gt;
variable pstrn = vec2orbit(vector(a, 0, 0));&lt;br /&gt;
variable astrn = vec2orbit(vector(-a, 0, 0));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, astrn]); line = 1, depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, -.5, .5);&lt;br /&gt;
pl1.camera_xyzlabel(astrn, &amp;quot;A&amp;quot;, .3, -.8);&lt;br /&gt;
% prism supporting the 3D position of the periastron &lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, pstrn-vector(0,pstrn.y,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(pstrn.x,0,pstrn.z), vector(pstrn.x,0,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(vector(pstrn.x, 0, pstrn.z));&lt;br /&gt;
% same for the apastron&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([astrn, astrn-vector(0,astrn.y,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(astrn.x,0,astrn.z), vector(astrn.x,0,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(vector(astrn.x, 0, astrn.z); line = 2);&lt;br /&gt;
% omega angle&lt;br /&gt;
n = arch(vector(1, 0, 0), pstrn, 85);&lt;br /&gt;
m = length(n.x)/2; % vector to half of the arch (-&amp;gt; label)&lt;br /&gt;
pl1.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.8*vector(n.x[m], n.y[m], n.z[m]), &amp;quot;$\omega$&amp;quot;R, 0, -.4);&lt;br /&gt;
% neutrons star position&lt;br /&gt;
pl1.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.5*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, -.6, .5);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl1.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
pl1.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
variable rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl1.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, .6, -.2; rotate = -55);&lt;br /&gt;
pl1.camera_xyzlabel(.5*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, .5, -.8);&lt;br /&gt;
% line of sight&lt;br /&gt;
pl1.camera_plot_polygon(rNS - vector([0,0], [0,0], [0,230]); color = &amp;quot;blue&amp;quot;, forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;line of sight&amp;quot;R, .85, .6; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;to Earth&amp;quot;R, .85, 1.2; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% second xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl2 = xfig_new_camera_plot(10,H);&lt;br /&gt;
variable incCam = 20; % camera inclination with respect to the orbital plane&lt;br /&gt;
pl2.camera_setup(incl-90+incCam, 0, 0); % incl-90 -&amp;gt; edge on&lt;br /&gt;
% rotate the camera around the orbital normal&lt;br /&gt;
variable rotCam = 160;&lt;br /&gt;
pl2.camera_data.cx = vector_rotate(pl2.camera_data.cx, nOrb, rotCam*PI/180);&lt;br /&gt;
pl2.camera_data.cy = vector_rotate(pl2.camera_data.cy, nOrb, rotCam*PI/180);&lt;br /&gt;
variable xmin = -260, ymin = -270, wlen = 500;&lt;br /&gt;
variable WH = 1.*pl2.plot_data.plot_height/pl2.plot_data.plot_width;&lt;br /&gt;
pl2.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl2.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl2.xylabel(.05, .87, &amp;quot;b)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
xyzlen = 200;&lt;br /&gt;
pl2.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% define colors&lt;br /&gt;
variable diskColor = &amp;quot;skyblue&amp;quot;;&lt;br /&gt;
% z-axis projected onto the orbital plane&lt;br /&gt;
variable zdisk = xyzlen*(ez - (ez*nOrb)*nOrb);&lt;br /&gt;
%zdisk *= (1./vector_norm(zdisk));&lt;br /&gt;
pl2.camera_plot_polygon(zdisk; color = &amp;quot;red&amp;quot;, line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([xyzlen*ez, zdisk]); line = 2, color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
pl2.camera_plot_polygon(rOrb; depth = 75);&lt;br /&gt;
pl2.camera_shade_region(rOrb; color = orbColor, depth = 100);&lt;br /&gt;
n = where(.837 &amp;lt; phi/2/PI &amp;lt; .95); % nasty hack for the dotted line behin the Be disk&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n; copy); depth = 65, line = 2);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.21); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, 0, -.3; size = &amp;quot;small&amp;quot;, rotate = -19);&lt;br /&gt;
pl2.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, .5, -.5);&lt;br /&gt;
% plot Be disk&lt;br /&gt;
n = where(dotprod(rDisk, nOrb) &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, n); depth = 70);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, m); line = 2, depth = 85);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, n); color = diskColor, depth = 70);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, m); color = diskColor, depth = 105);&lt;br /&gt;
n = struct_filter(rDisk, int(length(rDisk.x)*.15); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;Be disk&amp;quot;R, 0, .5; size = &amp;quot;small&amp;quot;, rotate = -23);&lt;br /&gt;
% highest point of the disk above the orbit&lt;br /&gt;
variable hline = vector_rotate(vector(0, 1, 0), vector(1, 0, 0), (incl+inclDisk)*PI/180);&lt;br /&gt;
hline = radDisk*vector_rotate(hline, nOrb, omegaDisk*PI/180);&lt;br /&gt;
pl2.camera_plot_polygon(hline; line = 3);&lt;br /&gt;
pl2.camera_xyzlabel(hline*1.1, &amp;quot;H&amp;quot;);&lt;br /&gt;
pl2.camera_plot_polygon(hline - (hline*nOrb)*nOrb; line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([hline, hline - (hline*nOrb)*nOrb]); line = 2);&lt;br /&gt;
% omega disk&lt;br /&gt;
n = arch(zdisk, hline - (hline*nOrb)*nOrb, 40; reverse);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.5*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\theta$&amp;quot;R, 0, .1);&lt;br /&gt;
% disk inclination&lt;br /&gt;
n = arch(hline, hline - (hline*nOrb)*nOrb, 60);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(.7*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\delta$&amp;quot;R, .2, -.2);&lt;br /&gt;
% neutrons star position (new one compared to plot 1)&lt;br /&gt;
phiNS = .09;&lt;br /&gt;
n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.6*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, 1.1, .9);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl2.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl2.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, 0, -.3; rotate = 39);&lt;br /&gt;
pl2.camera_xyzlabel(.9*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, 0, -.7);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
% combine and render&lt;br /&gt;
% (note: the camera plot renderes the lines only when .render is called.&lt;br /&gt;
%        thus we need to call these first, which is not a convenient way...)&lt;br /&gt;
pl1.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
pl2.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
xfig_new_hbox_compound(pl1,pl2).render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lin_log_axis_(xfig_example)&amp;diff=1544</id>
		<title>Lin log axis (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lin_log_axis_(xfig_example)&amp;diff=1544"/>
		<updated>2018-05-17T13:54:18Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:lin_log_axis.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%% define function for axis transformation:&lt;br /&gt;
private define mylinlog_wcs_func (val, opt)&lt;br /&gt;
{&lt;br /&gt;
  variable brk = opt.brk;&lt;br /&gt;
  variable scl = opt.scl;&lt;br /&gt;
  variable is_array = typeof (val)==Array_Type;&lt;br /&gt;
  variable x = [@val];&lt;br /&gt;
  variable i1 =[where(x &amp;gt; brk)];&lt;br /&gt;
  variable i2 =[where(-brk &amp;lt;= x &amp;lt;= brk)];&lt;br /&gt;
  variable i3 = [where(x &amp;lt; -brk)];&lt;br /&gt;
  x[i1] =  log(x[i1]/brk)+brk*scl;&lt;br /&gt;
  x[i2] =  x[i2]*scl ;&lt;br /&gt;
  x[i3] = -log(-x[i3]/brk)-brk*scl;&lt;br /&gt;
  return is_array ? x : x[0] ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%% define inverse function for axis transformation:&lt;br /&gt;
private define mylinlog_wcs_invfunc (val, opt)&lt;br /&gt;
{&lt;br /&gt;
  variable brk = opt.brk;&lt;br /&gt;
  variable scl = opt.scl;&lt;br /&gt;
  variable is_array = typeof (val)==Array_Type;&lt;br /&gt;
  variable x = [@val];&lt;br /&gt;
  variable i1 =[where(x &amp;gt; brk)];&lt;br /&gt;
  variable i2 =[where(-brk &amp;lt;= x &amp;lt;= brk)];&lt;br /&gt;
  variable i3 = [where(x &amp;lt; -brk)];&lt;br /&gt;
  x[i1] =  exp(x[i1]-brk*scl)*brk;&lt;br /&gt;
  x[i2] =  x[i2]/scl ;&lt;br /&gt;
  x[i3] = -exp(-x[i3]-brk*scl)*brk;&lt;br /&gt;
  return is_array ? x : x[0] ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%% &amp;quot;opt&amp;quot; is ONE optional argument (for more information use, e.g., a non-skalar argument)&lt;br /&gt;
%% check of array or not is only required due to the different cases. other functions&lt;br /&gt;
%% can simply use: return f(val);&lt;br /&gt;
&lt;br /&gt;
xfig_plot_add_transform (&amp;quot;mylinlog&amp;quot;, &amp;amp;mylinlog_wcs_func, &amp;amp;mylinlog_wcs_invfunc, struct{brk=1,scl=1} );&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%% generate some data:&lt;br /&gt;
variable xlim = 50; &lt;br /&gt;
variable x = [-(xlim^[1:0:#100]) , [-1:1:#50] , xlim^[0:1:#100] ];&lt;br /&gt;
variable y = exp(-1/(0.2+x^2))/(x^2+0.1);&lt;br /&gt;
&lt;br /&gt;
variable major = [0,[1,10,50],-dup];&lt;br /&gt;
variable minor = [[1:9]*0.1,-dup,[2:9], -dup, 10*[2:4], -dup];&lt;br /&gt;
%%%%%%%%%%%% plot data:&lt;br /&gt;
variable p = xfig_plot_new (14,10);&lt;br /&gt;
p.world (-(xlim^1.1), -dup, min_max(y); ylog, pady=0.05);&lt;br /&gt;
p.xaxis(;wcs=&amp;quot;mylinlog&amp;quot;, minor = minor, major=major);&lt;br /&gt;
p.x2axis(; ticlabels = 0);&lt;br /&gt;
p.plot(x,y);&lt;br /&gt;
p.render(&amp;quot;lin_log_axis.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1543</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1543"/>
		<updated>2018-05-17T13:40:17Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D, simple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=Lin log axis (xfig example)]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=Object3dsimple (xfig example)]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1542</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1542"/>
		<updated>2018-05-17T13:39:59Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D, simple */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=Lin log axis (xfig example)]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=Object3Dsimple (xfig example)]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3dsimple_(xfig_example)&amp;diff=1541</id>
		<title>Object3dsimple (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3dsimple_(xfig_example)&amp;diff=1541"/>
		<updated>2018-05-17T13:39:27Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Object3dsimple to Object3dsimple (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
===== Polar plot with 'xfig_polarplot_new =====&lt;br /&gt;
&lt;br /&gt;
[[File:object3dsimple.png|300px|]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
%%%%% GLOBAL PARAMETER: =======================================================&lt;br /&gt;
&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: modified Spherical angles&lt;br /&gt;
variable cam1 =  20*PI/180.; % cam1 = PI/2 -  thetaa&lt;br /&gt;
variable cam2 = -20*PI/180.; % cam2 = PI - phi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% GEOMETRY:&lt;br /&gt;
variable theta =  60*PI/180.; % Spot position&lt;br /&gt;
variable phi   = 35*PI/180.; % Spot position&lt;br /&gt;
variable R  = 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PLOT DIMENSION&lt;br /&gt;
variable size = 18;&lt;br /&gt;
variable xmin = -0.50*R;&lt;br /&gt;
variable xmax =  2.20*R;&lt;br /&gt;
variable ymin = -0.175*R;&lt;br /&gt;
variable ymax =  2.10*R;&lt;br /&gt;
&lt;br /&gt;
%%% PLOT COLORS&lt;br /&gt;
variable col_cbg = [&amp;quot;#88CCEE&amp;quot;,&lt;br /&gt;
                    &amp;quot;#999933&amp;quot;,&lt;br /&gt;
                    &amp;quot;#AA4499&amp;quot;,&lt;br /&gt;
                    &amp;quot;#332288&amp;quot;&lt;br /&gt;
                   ];&lt;br /&gt;
variable emitter = CB_COLOR_SCHEME[3];&lt;br /&gt;
variable intens  = CB_COLOR_SCHEME[4];&lt;br /&gt;
variable mu      = CB_COLOR_SCHEME[5];&lt;br /&gt;
variable muS     = CB_COLOR_SCHEME[6];&lt;br /&gt;
&lt;br /&gt;
%%% PHYSICAL VECTORS ==========================================================&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: Basis vectors&lt;br /&gt;
variable c1 = vector(1,0,0);&lt;br /&gt;
variable c2 = vector(0,1,0);&lt;br /&gt;
variable c3 = vector(0,0,1);&lt;br /&gt;
&lt;br /&gt;
c1 = vector_rotate( c1, vector(0,0,1), cam2 );&lt;br /&gt;
c2 = vector_rotate( c2, vector(0,0,1), cam2 );&lt;br /&gt;
c3 = vector_rotate( c3, vector(0,0,1), cam2 );&lt;br /&gt;
c1 = vector_rotate( c1, vector(1,0,0), cam1 );&lt;br /&gt;
c2 = vector_rotate( c2, vector(1,0,0), cam1 );&lt;br /&gt;
c3 = vector_rotate( c3, vector(1,0,0), cam1 );&lt;br /&gt;
&lt;br /&gt;
%%% AXIS&lt;br /&gt;
variable ex = vector( R, 0, 0 );&lt;br /&gt;
variable ey = vector( 0, R, 0 );&lt;br /&gt;
variable ez = vector( 0, 0, R );&lt;br /&gt;
                    &lt;br /&gt;
%%% PHOTON&lt;br /&gt;
variable k0  = vector( (1+2*sin(theta)*cos(phi))/3., phi, theta ; sph );&lt;br /&gt;
variable k0xy= @k0; k0xy.z=0;&lt;br /&gt;
variable k0x= @k0; k0x.y=0;k0x.z=0;&lt;br /&gt;
variable k0z= @k0; k0z.x=0;k0z.y=0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% FUNCTIONS =================================================================&lt;br /&gt;
%%% Must be defined here, as functions require some global variables!&lt;br /&gt;
&lt;br /&gt;
% Projection of vectors onto the camera plane&lt;br /&gt;
define P( v ){ %{{{&lt;br /&gt;
  variable vec = @v;&lt;br /&gt;
  if( typeof(vec)== Array_Type ){&lt;br /&gt;
    vec = merge_struct_arrays( v );&lt;br /&gt;
  }&lt;br /&gt;
  variable pro = vector_change_basis( vec, c1, c2, c3 );&lt;br /&gt;
  return pro;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% Return x,z component of Projection&lt;br /&gt;
define PP( v ){ %{{{&lt;br /&gt;
  variable p = P(v);&lt;br /&gt;
  return p.x, p.z;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% GREAT CIRCLE between 2 Vector&lt;br /&gt;
define GC( a, b ){ %{{{&lt;br /&gt;
&lt;br /&gt;
  variable N = qualifier(&amp;quot;N&amp;quot;,100);&lt;br /&gt;
  variable R = qualifier_exists(&amp;quot;R&amp;quot;)? 1:0;&lt;br /&gt;
&lt;br /&gt;
  variable na = unit_vector(a);&lt;br /&gt;
  variable nb = unit_vector(b);&lt;br /&gt;
&lt;br /&gt;
  variable rotangle = [0:acos(dotprod(na,nb))-R*2*PI:#N];&lt;br /&gt;
  variable rotvec   = unit_vector( crossprod( a, b ) );&lt;br /&gt;
&lt;br /&gt;
  variable gc = vector_rotate( na, rotvec, rotangle );&lt;br /&gt;
&lt;br /&gt;
  return gc;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PREPARE PLOT ==============================================================&lt;br /&gt;
variable s = 1.1;&lt;br /&gt;
variable ls= s*1.06;&lt;br /&gt;
variable N = 50;&lt;br /&gt;
&lt;br /&gt;
% arrow head&lt;br /&gt;
variable ARROW = xfig_create_arrow(;arrow_type=2,&lt;br /&gt;
                                   arrow_style=1,&lt;br /&gt;
                                   arrow_width=8,&lt;br /&gt;
                                   arrow_heigth=64,&lt;br /&gt;
                                   arrow_thickness=2&lt;br /&gt;
                                  );&lt;br /&gt;
variable AXIS = @ARROW;&lt;br /&gt;
AXIS.arrow_style=0;&lt;br /&gt;
AXIS.arrow_type=0;&lt;br /&gt;
&lt;br /&gt;
% intensity profile&lt;br /&gt;
variable xyint1 = vector( [0,(1+2*cos([-PI/2:    0:#N]))/3.], [0,[-PI/2:    0:#N]], [0,[PI/2.:PI/2.:#N]]; sph );&lt;br /&gt;
variable xyint2 = vector( [(1+2*cos([    0: PI/2:#N]))/3.,0], [[    0: PI/2:#N],0], [[PI/2.:PI/2.:#N],0]; sph );&lt;br /&gt;
variable xzint1 = vector( [0,(1+2*sin([    0: PI/2:#N]))/3.], [0,[    0:    0:#N]], [0,[0    : PI/2:#N]]; sph );&lt;br /&gt;
variable xzint2 = vector( [(1+2*sin([ PI/2:   PI:#N]))/3.,0], [[    0:    0:#N],0], [[PI/2 :   PI:#N],0]; sph );&lt;br /&gt;
variable yzint = vector( (1+2*cos([-PI/2:-PI/2:#N]))/3., [-PI/2:-PI/2:#N], [0    :2.*PI:#N]; sph );&lt;br /&gt;
&lt;br /&gt;
% mu: eta angle &lt;br /&gt;
variable eta  = .3*GC( k0, k0z );&lt;br /&gt;
variable etaS = .3*GC( k0x, k0xy );&lt;br /&gt;
&lt;br /&gt;
%%% PLOT ======================================================================&lt;br /&gt;
variable xp = xfig_plot_new(size,(ymax-ymin)/(xmax-xmin)*size);&lt;br /&gt;
xp.world( xmin, xmax, ymin, ymax ; padx=0.0, pady=0.0 );&lt;br /&gt;
xp.axis(;off);&lt;br /&gt;
&lt;br /&gt;
% axis&lt;br /&gt;
xp.plot( PP([0,s]*R*ex); forward_arrow=AXIS );&lt;br /&gt;
xp.xylabel( PP(ls*R*ex), &amp;quot;$\vec{e}_\mathsf{S}$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% xp.plot( PP([0,s]*R*ey); forward_arrow=AXIS );&lt;br /&gt;
% xp.xylabel( PP(ls*ey), &amp;quot;$y$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP(.5*[0,s]*ez); forward_arrow=AXIS  );&lt;br /&gt;
xp.xylabel( PP(.5*ls*ez), &amp;quot;$\vec{e}_\mathsf{B}$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% ZERO&lt;br /&gt;
xp.plot( PP(0.01*yzint) ; width=4, depth=10 );&lt;br /&gt;
&lt;br /&gt;
% k0&lt;br /&gt;
xp.plot( PP([0,1]*k0); width=2, forward_arrow=ARROW );&lt;br /&gt;
xp.xylabel( PP(1.1*k0), &amp;quot;$\vec{k}'$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% k0 components&lt;br /&gt;
xp.plot( PP([0,1]*k0xy); width=2 );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([k0z,k0])  ; width=2, line=1 );&lt;br /&gt;
xp.plot( PP([k0xy,k0]) ; width=2, line=1 );&lt;br /&gt;
xp.plot( PP([k0xy,k0x]); width=2, line=1 );&lt;br /&gt;
xp.plot( PP([k0z,k0z+k0x]); width=2, line=2 );&lt;br /&gt;
xp.plot( PP([k0x,k0z+k0x]); width=2, line=2 );&lt;br /&gt;
xp.plot( PP([k0,k0z+k0x]); width=2, line=2 );&lt;br /&gt;
&lt;br /&gt;
% angles&lt;br /&gt;
xp.plot( PP(eta)  ; width=2, line=0 );&lt;br /&gt;
xp.xylabel( PP(0.75*vector(mean(eta.x),mean(eta.y),mean(eta.z))), &amp;quot;$\eta'$&amp;quot;R  );&lt;br /&gt;
xp.plot( PP(etaS) ; width=2, line=0 );&lt;br /&gt;
xp.xylabel( PP(1.25*vector(mean(etaS.x),mean(etaS.y),mean(etaS.z))), &amp;quot;$\eta_\mathsf{S}$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% mus&lt;br /&gt;
xp.plot( PP([0,1]*k0x) ; width=4, color=muS );&lt;br /&gt;
xp.xylabel( PP(.9*k0x-.15*ey), &amp;quot;$\mu_\mathsf{S}$&amp;quot;R ; color=muS );&lt;br /&gt;
xp.plot( PP([0,1]*k0z) ; width=4, color=mu );&lt;br /&gt;
xp.xylabel( PP(.9*k0z-.15*ey), &amp;quot;$\mu'$&amp;quot;R ; color=mu );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% intensity&lt;br /&gt;
xp.plot( PP(xyint1) ; color=intens, line=0, width=2, depth=201 );&lt;br /&gt;
xp.plot( PP(xyint2) ; color=intens, line=0, width=2, depth=203 );&lt;br /&gt;
xp.plot( PP(xyint2) ; color=intens, line=1, width=1, depth=200 );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP(xzint1) ; color=intens, line=0, width=2, depth=201 );&lt;br /&gt;
xp.plot( PP(xzint2) ; color=intens, line=0, width=2, depth=202 );&lt;br /&gt;
xp.plot( PP(xzint2) ; color=intens, line=1, width=1, depth=200 );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP(yzint)  ; color=intens, line=0, width=2, depth=204 );&lt;br /&gt;
xp.plot( PP(yzint)  ; color=intens, line=1, width=1, depth=200 );&lt;br /&gt;
&lt;br /&gt;
xp.shade_region( PP(xyint1) ; color=intens, fill=36, width=0, depth=201 );&lt;br /&gt;
xp.shade_region( PP(xyint2) ; color=intens, fill=36, width=0, depth=203 );&lt;br /&gt;
xp.shade_region( PP(xzint1) ; color=intens, fill=36, width=0, depth=201 );&lt;br /&gt;
xp.shade_region( PP(xzint2) ; color=intens, fill=36, width=0, depth=202 );&lt;br /&gt;
xp.shade_region( PP(yzint)  ; color=intens, fill=36, width=0, depth=204 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% emitter plane&lt;br /&gt;
variable eplane = .5*R*vector( [ [ 0: 0:#N], [ 0: 0:#N],[ 0: 0:#N],[ 0: 0:#N]],&lt;br /&gt;
                               [ [-1: 1:#N], [ 1: 1:#N],[ 1:-1:#N],[-1:-1:#N]],&lt;br /&gt;
                               [ [-1:-1:#N], [-1: 1:#N],[ 1: 1:#N],[ 1:-1:#N]]&lt;br /&gt;
                             );&lt;br /&gt;
xp.shade_region( PP(eplane); color=emitter, fill=36,depth=250, width=0 );&lt;br /&gt;
xp.plot( PP(eplane); color=emitter, line=0, depth=205, width=1 );&lt;br /&gt;
xp.plot( PP(eplane); color=emitter, line=1, depth=200, width=1 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xp.render(&amp;quot;bdsframe.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1540</id>
		<title>3D orbit plots (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1540"/>
		<updated>2018-05-17T13:38:53Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:orbit3d.png|380px]]&lt;br /&gt;
&lt;br /&gt;
The projection and handling of plotting in 3D is very similar to the examples [[Object3dsimple (xfig example)|Plotting in 3D (simple)]] and [[Object3d (xfig example)|Plotting in 3D]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%-*- mode: fold; mode: slang -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% we will produce two plots: one showing the orbital plane in the&lt;br /&gt;
% context of the tangent plane of the sky and, thus, defining the&lt;br /&gt;
% orbital elements. the second one defines the Be disk geometry&lt;br /&gt;
% with respect to the orbital plane only, i.e, *without* the&lt;br /&gt;
% tangent plane of the sky and the orbital elements.&lt;br /&gt;
&lt;br /&gt;
% in the coordinate system used here, the tangent plane of the sky&lt;br /&gt;
% is defined as the xy-plane and the z-axis points away from Earth.&lt;br /&gt;
% that is with a camera inclination and roll angle of zero, we are&lt;br /&gt;
% looking directly onto the tangent plane of the sky. note that the&lt;br /&gt;
% x and y axis points north and east, respectively, i.e., the xy&lt;br /&gt;
% axis are flipped to ensure a right handed coordinate system.&lt;br /&gt;
&lt;br /&gt;
xfig_add_latex_package(&amp;quot;bm&amp;quot;); % for bold and italic fonts in mathmode&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\let\mathbfit\bm&amp;quot;R); % alias for MNRAS&lt;br /&gt;
xfig_set_font_style(NULL); % no bold face anywhere&lt;br /&gt;
&lt;br /&gt;
%%% implement camera object %{{{&lt;br /&gt;
&lt;br /&gt;
% set up the camera view port&lt;br /&gt;
private define _xfig_camera_setup(s, incl, zrot, roll) {&lt;br /&gt;
  s.camera_data.incl = incl;&lt;br /&gt;
  s.camera_data.zrot = zrot;&lt;br /&gt;
  s.camera_data.roll = roll;&lt;br /&gt;
  % update camera vectors&lt;br /&gt;
  s.camera_data.cx = vector_rotate(&lt;br /&gt;
    vector(1,0,0), vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  s.camera_data.cy = vector_rotate(&lt;br /&gt;
    vector_rotate(vector(0,1,0), vector(1,0,0), s.camera_data.incl*PI/180),&lt;br /&gt;
    vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  % optical axis of the camera&lt;br /&gt;
  variable camaxis = crossprod(s.camera_data.cx, s.camera_data.cy);&lt;br /&gt;
  % rotate around this vector&lt;br /&gt;
  s.camera_data.cx = vector_rotate(s.camera_data.cx, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
  s.camera_data.cy = vector_rotate(s.camera_data.cy, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add polygons to the plot&lt;br /&gt;
private define _xfig_camera_plot_polygon(s, v) {&lt;br /&gt;
  % add starting point [0,0,0]&lt;br /&gt;
  if (length(v.x) == 1 &amp;amp;&amp;amp; not qualifier_exists(&amp;quot;skiporigin&amp;quot;)) {&lt;br /&gt;
    v = struct_copy(v);&lt;br /&gt;
    v.x = [0, v.x];&lt;br /&gt;
    v.y = [0, v.y];&lt;br /&gt;
    v.z = [0, v.z];&lt;br /&gt;
  }&lt;br /&gt;
  % add to list&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add shaded region to the plot&lt;br /&gt;
private define _xfig_camera_shade_region(s, v) {&lt;br /&gt;
  % add to the same list as for polygons, but set a qualifier&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, struct_combine(&lt;br /&gt;
    __qualifiers, struct { _camera_shade_region }&lt;br /&gt;
  ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add label to the plot&lt;br /&gt;
private define _xfig_camera_xyzlabel() {&lt;br /&gt;
  variable s, v, l, dx = 0, dy = 0;&lt;br /&gt;
  switch (_NARGS)&lt;br /&gt;
    { case 3: (s, v, l) = (); }&lt;br /&gt;
    { case 5: (s, v, l, dx, dy) = (); }&lt;br /&gt;
  list_append(s.camera_data.labels, v);&lt;br /&gt;
  list_append(s.camera_data.labels, l);&lt;br /&gt;
  list_append(s.camera_data.labels, [dx, dy]);&lt;br /&gt;
  list_append(s.camera_data.labels_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% render polygons&lt;br /&gt;
private define _xfig_camera_render_polygons(s, pl) {&lt;br /&gt;
  % loop over polygons&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, length(s.camera_data.polygons)-1, 1) {&lt;br /&gt;
    % shade region&lt;br /&gt;
    if (s.camera_data.polygons_qualifiers[i] != NULL &amp;amp;&amp;amp;&lt;br /&gt;
	struct_field_exists(s.camera_data.polygons_qualifiers[i], &amp;quot;_camera_shade_region&amp;quot;)) {&lt;br /&gt;
      pl.shade_region(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    % plot line&lt;br /&gt;
    else {&lt;br /&gt;
      pl.plot(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  % loop over labels&lt;br /&gt;
  _for i (0, length(s.camera_data.labels)/3-1, 1) {&lt;br /&gt;
    pl.xylabel(&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cx),&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cy),&lt;br /&gt;
      s.camera_data.labels[3*i+1], __push_array(s.camera_data.labels[3*i+2]);;&lt;br /&gt;
      s.camera_data.labels_qualifiers[i]&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% new render function&lt;br /&gt;
private define _xfig_camera_render(s, file) {&lt;br /&gt;
  % first render all polygons&lt;br /&gt;
  s.camera_render_polygons(s, s);&lt;br /&gt;
  % default xfig render&lt;br /&gt;
  (@(s.camera_data.camera_xfig_render))(file);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% return an xfig_plot_new with a camera object included&lt;br /&gt;
define xfig_new_camera_plot() {&lt;br /&gt;
  variable args = __pop_args(_NARGS);&lt;br /&gt;
  variable s = struct_combine(&lt;br /&gt;
    struct {&lt;br /&gt;
      camera_setup = &amp;amp;_xfig_camera_setup,&lt;br /&gt;
      camera_plot_polygon = &amp;amp;_xfig_camera_plot_polygon,&lt;br /&gt;
      camera_xyzlabel = &amp;amp;_xfig_camera_xyzlabel,&lt;br /&gt;
      camera_shade_region = &amp;amp;_xfig_camera_shade_region,&lt;br /&gt;
      camera_render_polygons = &amp;amp;_xfig_camera_render_polygons,&lt;br /&gt;
      camera_data = struct { % camera data&lt;br /&gt;
	polygons = list_new, % list of polygons (Vector_Type[]) to plot&lt;br /&gt;
	polygons_qualifiers = list_new, % plot qualifiers for each polygon&lt;br /&gt;
	labels = list_new, % list of labels (Vector_Type[], String_Type)&lt;br /&gt;
	labels_qualifiers = list_new, % qualifiers for each label&lt;br /&gt;
	incl, zrot, roll, % camera inclination (around x), rotation (around z), and roll (around the optical axis)&lt;br /&gt;
	cx, cy, % unit vectors&lt;br /&gt;
        camera_xfig_render % remember xfig renderer function&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    xfig_plot_new(__push_args(args))&lt;br /&gt;
  );&lt;br /&gt;
  % default camera setup&lt;br /&gt;
  s.camera_setup(0, 0, 0);&lt;br /&gt;
  % remember xfig renderer function and then overwrite&lt;br /&gt;
  s.camera_data.camera_xfig_render = s.render;&lt;br /&gt;
  s.render = &amp;amp;_xfig_camera_render;&lt;br /&gt;
  &lt;br /&gt;
  return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% useful functions %{{{&lt;br /&gt;
&lt;br /&gt;
% function to split a closed line given as an array of vectors using indices.&lt;br /&gt;
% ensure that the returned arrays of vectors define a line without breaks&lt;br /&gt;
define vecsplitsort(r, n) {&lt;br /&gt;
  variable len = vector_norm(vector(diff(r.x[n]), diff(r.y[n]), diff(r.z[n])));&lt;br /&gt;
  variable i = @n;&lt;br /&gt;
  if (max(len) &amp;gt; 2*median(len)) {&lt;br /&gt;
    i = shift(n, where_max(len)+1);&lt;br /&gt;
  }&lt;br /&gt;
  return vector(r.x[i], r.y[i], r.z[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function to shift, incline, and rotate a vector into the orbital plane&lt;br /&gt;
variable a, incl, omega, nOrb, ecc;&lt;br /&gt;
define vec2orbit(x) {&lt;br /&gt;
  % translate according to the focal point (center of mass)&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;notrans&amp;quot;)) {&lt;br /&gt;
    x += vector(-sqrt(a^2 - (a*(1-ecc))^2), 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
  % incline&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noincl&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(x, vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
  }&lt;br /&gt;
  % rotate&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noomega&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(&lt;br /&gt;
      x, nOrb, omega * PI/180&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
  return x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% calculates an arch between the vectors v1 and v2 with radius r&lt;br /&gt;
define arch(v1, v2, r) {&lt;br /&gt;
  v1 *= (1./vector_norm(v1));&lt;br /&gt;
  v2 *= (1./vector_norm(v2));&lt;br /&gt;
  % angle between the vectors and rotation axis, i.e, the normal&lt;br /&gt;
  variable angle = acos(dotprod(v1, v2));&lt;br /&gt;
  variable axis = crossprod(v1, v2);&lt;br /&gt;
  axis *= (1./vector_norm(axis));&lt;br /&gt;
  if (qualifier_exists(&amp;quot;reverse&amp;quot;)) {&lt;br /&gt;
    axis *= -1;&lt;br /&gt;
    angle = 2*PI - angle;&lt;br /&gt;
  }&lt;br /&gt;
  % calculate arch by rotating v1 around the axis&lt;br /&gt;
  variable nphi = int(1000*angle/2/PI);&lt;br /&gt;
  variable step = angle / nphi;&lt;br /&gt;
  variable arch = Vector_Type[nphi];&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, nphi-1, 1) {&lt;br /&gt;
    arch[i] = r*vector_rotate(v1, axis, step*i);&lt;br /&gt;
  }&lt;br /&gt;
  return merge_struct_arrays(arch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% define geometry %{{{&lt;br /&gt;
&lt;br /&gt;
% orbit parameters&lt;br /&gt;
variable ecc = .05, a = 300; % = 1 - b/a&lt;br /&gt;
variable omega = -50, incl = 30.;&lt;br /&gt;
% Be disk parameters&lt;br /&gt;
variable inclDisk = -50;&lt;br /&gt;
variable omegaDisk = 180+28;&lt;br /&gt;
variable radDisk = 150;&lt;br /&gt;
% neutron star's orbital plase&lt;br /&gt;
variable phiNS = .9;&lt;br /&gt;
&lt;br /&gt;
% define normal vectors of the reference frame (plotted later)&lt;br /&gt;
% (note that x and y are flipped, see abow)&lt;br /&gt;
variable ex = vector(0,1,0);&lt;br /&gt;
variable ey = vector(1,0,0);&lt;br /&gt;
variable ez = vector(0,0,1);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable n, m;&lt;br /&gt;
%%% calculation of orbit, disk, and neutron star position and disk %{{{&lt;br /&gt;
&lt;br /&gt;
% calculate orbit&lt;br /&gt;
variable nOrb = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
variable phi = [0:2*PI:#1000];&lt;br /&gt;
variable rOrb = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rOrb.x, rOrb.y) = ellipse(a, a*(1-ecc), 0, phi);&lt;br /&gt;
rOrb = vec2orbit(rOrb);&lt;br /&gt;
&lt;br /&gt;
% calculate Be disk&lt;br /&gt;
variable rDisk = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rDisk.x, rDisk.y) = ellipse(radDisk, radDisk, 0, phi);&lt;br /&gt;
rDisk = vector_rotate(rDisk, vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
rDisk = vector_rotate(rDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
% disk normal&lt;br /&gt;
variable nDisk = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
nDisk = vector_rotate(nDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
&lt;br /&gt;
% neutron star position&lt;br /&gt;
variable n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
variable rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable H = 12; % plot heights (width set individually)&lt;br /&gt;
%%% first xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl1 = xfig_new_camera_plot(8.,H);&lt;br /&gt;
pl1.camera_setup(40, 40, 0);&lt;br /&gt;
variable xmin = -315, ymin = -350, wlen = 850;&lt;br /&gt;
variable WH = 1.*pl1.plot_data.plot_height/pl1.plot_data.plot_width;&lt;br /&gt;
pl1.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl1.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl1.xylabel(.01, .99, &amp;quot;a)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
% define colors&lt;br /&gt;
variable orbColor = &amp;quot;#ffca57&amp;quot;;&lt;br /&gt;
variable tgColor = &amp;quot;#ffff71&amp;quot;;&lt;br /&gt;
% xyz-axes&lt;br /&gt;
variable xyzlen = 250.; % arrow length&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ex; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ey; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ex, &amp;quot;x&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ey, &amp;quot;y&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, n); depth = 85);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, m); line = 2, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, n); color = orbColor, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, m); color = orbColor, depth = 95);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.38); copy);&lt;br /&gt;
pl1.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, .3, .2; size = &amp;quot;small&amp;quot;, rotate = -25);&lt;br /&gt;
% plot tangent plane of the sky&lt;br /&gt;
variable tg = vector(&lt;br /&gt;
  -390*[1,0,0,1,1] + 320*[0,1,1,0,0],&lt;br /&gt;
  -250*[1,1,0,0,1] + 370*[0,0,1,1,0],&lt;br /&gt;
  [0,0,0,0,0]&lt;br /&gt;
);&lt;br /&gt;
pl1.camera_plot_polygon(tg; depth = 90);&lt;br /&gt;
pl1.camera_shade_region(tg; color = tgColor, depth = 90);&lt;br /&gt;
n = -28;&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;tangent plane&amp;quot;R, .55, -.7; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;of the sky&amp;quot;R, .6, -.2; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
% intersection of the planes&lt;br /&gt;
n = wherefirstmin(abs(rOrb.y + rOrb.z));&lt;br /&gt;
pl1.camera_plot_polygon(vector(rOrb.x[n], 0, 0); line = 1);&lt;br /&gt;
% inclination angle&lt;br /&gt;
  % find intersection of the orbit with the x-axis&lt;br /&gt;
n = where_min(abs(abs(rOrb.y) + rOrb.z)) + [-1,0,1];&lt;br /&gt;
m = interpol_points(0, rOrb.y[n], rOrb.x[n]);&lt;br /&gt;
pl1.camera_plot_polygon(vector([m,m], [0,-80], [0,0]); depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(vector(m, -60, 0), &amp;quot;$i$&amp;quot;, .75, -.1);&lt;br /&gt;
  % find the point on the orbit, which at a certain distance from this intersection point&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0 and rOrb.x &amp;gt; 0);&lt;br /&gt;
n = n[where_min(abs(vector_norm(struct_filter(rOrb, n; copy) - vector(m, 0, 0)) - 80))];&lt;br /&gt;
  % connect the intersection point and the orbit with an arch of the same length as the distance&lt;br /&gt;
pl1.camera_plot_polygon(vector(m, 0, 0) + arch(&lt;br /&gt;
    vector(0, -1, 0), vector(rOrb.x[n] - m, rOrb.y[n], rOrb.z[n]), 80&lt;br /&gt;
));&lt;br /&gt;
% periastron and apastron position&lt;br /&gt;
variable pstrn = vec2orbit(vector(a, 0, 0));&lt;br /&gt;
variable astrn = vec2orbit(vector(-a, 0, 0));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, astrn]); line = 1, depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, -.5, .5);&lt;br /&gt;
pl1.camera_xyzlabel(astrn, &amp;quot;A&amp;quot;, .3, -.8);&lt;br /&gt;
% prism supporting the 3D position of the periastron &lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, pstrn-vector(0,pstrn.y,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(pstrn.x,0,pstrn.z), vector(pstrn.x,0,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(vector(pstrn.x, 0, pstrn.z));&lt;br /&gt;
% same for the apastron&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([astrn, astrn-vector(0,astrn.y,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(astrn.x,0,astrn.z), vector(astrn.x,0,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(vector(astrn.x, 0, astrn.z); line = 2);&lt;br /&gt;
% omega angle&lt;br /&gt;
n = arch(vector(1, 0, 0), pstrn, 85);&lt;br /&gt;
m = length(n.x)/2; % vector to half of the arch (-&amp;gt; label)&lt;br /&gt;
pl1.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.8*vector(n.x[m], n.y[m], n.z[m]), &amp;quot;$\omega$&amp;quot;R, 0, -.4);&lt;br /&gt;
% neutrons star position&lt;br /&gt;
pl1.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.5*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, -.6, .5);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl1.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
pl1.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
variable rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl1.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, .6, -.2; rotate = -55);&lt;br /&gt;
pl1.camera_xyzlabel(.5*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, .5, -.8);&lt;br /&gt;
% line of sight&lt;br /&gt;
pl1.camera_plot_polygon(rNS - vector([0,0], [0,0], [0,230]); color = &amp;quot;blue&amp;quot;, forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;line of sight&amp;quot;R, .85, .6; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;to Earth&amp;quot;R, .85, 1.2; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% second xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl2 = xfig_new_camera_plot(10,H);&lt;br /&gt;
variable incCam = 20; % camera inclination with respect to the orbital plane&lt;br /&gt;
pl2.camera_setup(incl-90+incCam, 0, 0); % incl-90 -&amp;gt; edge on&lt;br /&gt;
% rotate the camera around the orbital normal&lt;br /&gt;
variable rotCam = 160;&lt;br /&gt;
pl2.camera_data.cx = vector_rotate(pl2.camera_data.cx, nOrb, rotCam*PI/180);&lt;br /&gt;
pl2.camera_data.cy = vector_rotate(pl2.camera_data.cy, nOrb, rotCam*PI/180);&lt;br /&gt;
variable xmin = -260, ymin = -270, wlen = 500;&lt;br /&gt;
variable WH = 1.*pl2.plot_data.plot_height/pl2.plot_data.plot_width;&lt;br /&gt;
pl2.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl2.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl2.xylabel(.05, .87, &amp;quot;b)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
xyzlen = 200;&lt;br /&gt;
pl2.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% define colors&lt;br /&gt;
variable diskColor = &amp;quot;skyblue&amp;quot;;&lt;br /&gt;
% z-axis projected onto the orbital plane&lt;br /&gt;
variable zdisk = xyzlen*(ez - (ez*nOrb)*nOrb);&lt;br /&gt;
%zdisk *= (1./vector_norm(zdisk));&lt;br /&gt;
pl2.camera_plot_polygon(zdisk; color = &amp;quot;red&amp;quot;, line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([xyzlen*ez, zdisk]); line = 2, color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
pl2.camera_plot_polygon(rOrb; depth = 75);&lt;br /&gt;
pl2.camera_shade_region(rOrb; color = orbColor, depth = 100);&lt;br /&gt;
n = where(.837 &amp;lt; phi/2/PI &amp;lt; .95); % nasty hack for the dotted line behin the Be disk&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n; copy); depth = 65, line = 2);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.21); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, 0, -.3; size = &amp;quot;small&amp;quot;, rotate = -19);&lt;br /&gt;
pl2.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, .5, -.5);&lt;br /&gt;
% plot Be disk&lt;br /&gt;
n = where(dotprod(rDisk, nOrb) &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, n); depth = 70);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, m); line = 2, depth = 85);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, n); color = diskColor, depth = 70);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, m); color = diskColor, depth = 105);&lt;br /&gt;
n = struct_filter(rDisk, int(length(rDisk.x)*.15); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;Be disk&amp;quot;R, 0, .5; size = &amp;quot;small&amp;quot;, rotate = -23);&lt;br /&gt;
% highest point of the disk above the orbit&lt;br /&gt;
variable hline = vector_rotate(vector(0, 1, 0), vector(1, 0, 0), (incl+inclDisk)*PI/180);&lt;br /&gt;
hline = radDisk*vector_rotate(hline, nOrb, omegaDisk*PI/180);&lt;br /&gt;
pl2.camera_plot_polygon(hline; line = 3);&lt;br /&gt;
pl2.camera_xyzlabel(hline*1.1, &amp;quot;H&amp;quot;);&lt;br /&gt;
pl2.camera_plot_polygon(hline - (hline*nOrb)*nOrb; line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([hline, hline - (hline*nOrb)*nOrb]); line = 2);&lt;br /&gt;
% omega disk&lt;br /&gt;
n = arch(zdisk, hline - (hline*nOrb)*nOrb, 40; reverse);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.5*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\theta$&amp;quot;R, 0, .1);&lt;br /&gt;
% disk inclination&lt;br /&gt;
n = arch(hline, hline - (hline*nOrb)*nOrb, 60);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(.7*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\delta$&amp;quot;R, .2, -.2);&lt;br /&gt;
% neutrons star position (new one compared to plot 1)&lt;br /&gt;
phiNS = .09;&lt;br /&gt;
n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.6*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, 1.1, .9);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl2.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl2.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, 0, -.3; rotate = 39);&lt;br /&gt;
pl2.camera_xyzlabel(.9*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, 0, -.7);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
% combine and render&lt;br /&gt;
% (note: the camera plot renderes the lines only when .render is called.&lt;br /&gt;
%        thus we need to call these first, which is not a convenient way...)&lt;br /&gt;
pl1.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
pl2.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
xfig_new_hbox_compound(pl1,pl2).render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1539</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1539"/>
		<updated>2018-05-17T13:38:03Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Linear-Logarithmic Axis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=Lin log axis (xfig example)]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lin_log_axis_(xfig_example)&amp;diff=1538</id>
		<title>Lin log axis (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Lin_log_axis_(xfig_example)&amp;diff=1538"/>
		<updated>2018-05-17T13:37:34Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Isis:slxfig:lin log axis to Lin log axis (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:lin_log_axis.png|300px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%% define function for axis transformation:&lt;br /&gt;
private define mylinlog_wcs_func (val, opt)&lt;br /&gt;
{&lt;br /&gt;
  variable brk = opt.brk;&lt;br /&gt;
  variable scl = opt.scl;&lt;br /&gt;
  variable is_array = typeof (val)==Array_Type;&lt;br /&gt;
  variable x = [@val];&lt;br /&gt;
  variable i1 =[where(x &amp;gt; brk)];&lt;br /&gt;
  variable i2 =[where(-brk &amp;lt;= x &amp;lt;= brk)];&lt;br /&gt;
  variable i3 = [where(x &amp;lt; -brk)];&lt;br /&gt;
  x[i1] =  log(x[i1]/brk)+brk*scl;&lt;br /&gt;
  x[i2] =  x[i2]*scl ;&lt;br /&gt;
  x[i3] = -log(-x[i3]/brk)-brk*scl;&lt;br /&gt;
  return is_array ? x : x[0] ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%% define inverse function for axis transformation:&lt;br /&gt;
private define mylinlog_wcs_invfunc (val, opt)&lt;br /&gt;
{&lt;br /&gt;
  variable brk = opt.brk;&lt;br /&gt;
  variable scl = opt.scl;&lt;br /&gt;
  variable is_array = typeof (val)==Array_Type;&lt;br /&gt;
  variable x = [@val];&lt;br /&gt;
  variable i1 =[where(x &amp;gt; brk)];&lt;br /&gt;
  variable i2 =[where(-brk &amp;lt;= x &amp;lt;= brk)];&lt;br /&gt;
  variable i3 = [where(x &amp;lt; -brk)];&lt;br /&gt;
  x[i1] =  exp(x[i1]-brk*scl)*brk;&lt;br /&gt;
  x[i2] =  x[i2]/scl ;&lt;br /&gt;
  x[i3] = -exp(-x[i3]-brk*scl)*brk;&lt;br /&gt;
  return is_array ? x : x[0] ;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%% &amp;quot;opt&amp;quot; is ONE optional argument (for more information use, e.g., a non-skalar argument)&lt;br /&gt;
%% check of array or not is only required due to the different cases. other functions&lt;br /&gt;
%% can simply use: return f(val);&lt;br /&gt;
&lt;br /&gt;
xfig_plot_add_transform (&amp;quot;mylinlog&amp;quot;, &amp;amp;mylinlog_wcs_func, &amp;amp;mylinlog_wcs_invfunc, struct{brk=1,scl=1} );&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%% generate some data:&lt;br /&gt;
variable xlim = 50; &lt;br /&gt;
variable x = [-(xlim^[1:0:#100]) , [-1:1:#50] , xlim^[0:1:#100] ];&lt;br /&gt;
variable y = exp(-1/(0.2+x^2))/(x^2+0.1);&lt;br /&gt;
&lt;br /&gt;
variable major = [0,[1,10,50],-dup];&lt;br /&gt;
variable minor = [[1:9]*0.1,-dup,[2:9], -dup, 10*[2:4], -dup];&lt;br /&gt;
%%%%%%%%%%%% plot data:&lt;br /&gt;
variable p = xfig_plot_new (14,10);&lt;br /&gt;
p.world (-(xlim^1.1), -dup, min_max(y); ylog, pady=0.05);&lt;br /&gt;
p.xaxis(;wcs=&amp;quot;mylinlog&amp;quot;, minor = minor, major=major);&lt;br /&gt;
p.x2axis(; ticlabels = 0);&lt;br /&gt;
p.plot(x,y);&lt;br /&gt;
p.render(&amp;quot;lin_log_axis.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1537</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1537"/>
		<updated>2018-05-17T13:36:55Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Monster Lightcurve Plot */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=Monsterlightcurve (xfig example)]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Monsterlightcurve_(xfig_example)&amp;diff=1536</id>
		<title>Monsterlightcurve (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Monsterlightcurve_(xfig_example)&amp;diff=1536"/>
		<updated>2018-05-17T13:36:23Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Monsterlightcurve to Monsterlightcurve (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[File:monster_lightcurve_vg.png]]&lt;br /&gt;
&lt;br /&gt;
File ''common_pars.sl'', which I use to load some parameters common to all plots in a paper:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%% -- set up variables for plotting&lt;br /&gt;
variable width = 10;&lt;br /&gt;
variable height = 10;&lt;br /&gt;
&lt;br /&gt;
variable fullwidth = 25;&lt;br /&gt;
&lt;br /&gt;
variable mjdmin = MJDofDate(1995,12,15);&lt;br /&gt;
variable mjdmax = MJDofDate(2012,12,30);&lt;br /&gt;
variable yearmin = dateOfMJD(mjdmin);&lt;br /&gt;
variable yearmax = dateOfMJD(mjdmax); &lt;br /&gt;
&lt;br /&gt;
variable max_asmh = 2.5;&lt;br /&gt;
variable min_asmh = 0.;&lt;br /&gt;
variable max_asmr = 150.;&lt;br /&gt;
variable min_asmr = 0.;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%ends of activity periods&lt;br /&gt;
variable e1 = 50350;&lt;br /&gt;
variable e2 = 51000;&lt;br /&gt;
variable e3 = 53900;&lt;br /&gt;
variable e4 = 55375;&lt;br /&gt;
&lt;br /&gt;
%%define colours&lt;br /&gt;
variable cl_hard = &amp;quot;blue&amp;quot;;&lt;br /&gt;
variable cl_tran = &amp;quot;green4&amp;quot;;&lt;br /&gt;
variable cl_soft = &amp;quot;red&amp;quot;;&lt;br /&gt;
variable cl_neutral = &amp;quot;gray&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
variable cl_hard_bg = &amp;quot;blue1&amp;quot;;&lt;br /&gt;
variable cl_soft_bg = &amp;quot;pink3&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
%%define data specific stuff&lt;br /&gt;
variable gamma_hard = 2.0;&lt;br /&gt;
variable gamma_soft = 2.5;&lt;br /&gt;
&lt;br /&gt;
%define mapping parameters&lt;br /&gt;
variable asm_th = 20.; % threshold&lt;br /&gt;
variable asm_x0 = 0.28; %x-intersection&lt;br /&gt;
variable asm_hs = 55.; %hard slope&lt;br /&gt;
variable asm_ss = 350.; %soft slope&lt;br /&gt;
&lt;br /&gt;
%%define paths to data&lt;br /&gt;
variable maxiname = &amp;quot;lc_1orbit-Cyg_X-1_55058.09375-56244.21875.csv&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual plotting routine:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
require(&amp;quot;../common_pars&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable width=25;&lt;br /&gt;
variable hh = 3.5;&lt;br /&gt;
&lt;br /&gt;
variable asmmin = 0;&lt;br /&gt;
variable asmmax = 200;&lt;br /&gt;
variable asmamin = 0;&lt;br /&gt;
variable asmamax = 100;&lt;br /&gt;
variable asmcmin = 0;&lt;br /&gt;
variable asmcmax = 50;&lt;br /&gt;
variable batmin = -0.09;&lt;br /&gt;
variable batmax = 0.39;&lt;br /&gt;
&lt;br /&gt;
variable asmarrow = 170;&lt;br /&gt;
variable ptext = 185; &lt;br /&gt;
&lt;br /&gt;
variable dnd = fits_read_table(&amp;quot;../data/all_disk_nodisk.fits&amp;quot;);&lt;br /&gt;
variable obs = fits_read_table(&amp;quot;../data/all_obs.fits&amp;quot;);&lt;br /&gt;
variable tt = (obs.tstart+obs.tstop)/2.;&lt;br /&gt;
variable pca_hard = where(dnd.bknpower_1_phoindx1_value &amp;lt; gamma_hard);&lt;br /&gt;
variable pca_tran = where(gamma_hard &amp;lt;= dnd.bknpower_1_phoindx1_value &amp;lt; gamma_soft);&lt;br /&gt;
variable pca_soft = where(gamma_soft &amp;lt;= dnd.bknpower_1_phoindx1_value);&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
variable asm = RXTE_ASM_lightcurve(&amp;quot;cygx1&amp;quot;);&lt;br /&gt;
struct_filter(asm,where(asm.rate_a &amp;gt; 0));&lt;br /&gt;
struct_filter(asm,where(asm.rate_b &amp;gt; 0));&lt;br /&gt;
struct_filter(asm,where(asm.rate_c &amp;gt; 0));&lt;br /&gt;
&lt;br /&gt;
variable asm_late = struct_filter(asm,where(asm.time &amp;gt; 55200);copy,dim=0);&lt;br /&gt;
struct_filter(asm,where(asm.time &amp;lt; 55200));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable hardness = asm.rate_c/asm.rate_a;&lt;br /&gt;
&lt;br /&gt;
variable asm_hard = where(asm.rate &amp;lt;= asm_th or asm.rate &amp;lt;= (hardness-asm_x0)*asm_hs);&lt;br /&gt;
variable asm_tran = where(asm.rate &amp;gt; asm_th and asm.rate &amp;gt; (hardness-asm_x0)*asm_hs&lt;br /&gt;
		 and asm.rate &amp;lt;= (hardness-asm_x0)*asm_ss);&lt;br /&gt;
variable asm_soft = where(asm.rate &amp;gt; asm_th and asm.rate &amp;gt; (hardness-asm_x0)*asm_ss); &lt;br /&gt;
&lt;br /&gt;
%%index for the times during the longhard state&lt;br /&gt;
variable ind_longhard = where( 53900 &amp;lt; asm.time &amp;lt; 54900);&lt;br /&gt;
&lt;br /&gt;
%BAT&lt;br /&gt;
variable bat = fits_read_table(&amp;quot;../data/CygX-1.orbit.lc.fits&amp;quot;); %&lt;br /&gt;
bat.time = bat.time/3600./24.+51910+0.00074287038;&lt;br /&gt;
&lt;br /&gt;
struct_filter(bat,where(bat.time &amp;lt; 56240));&lt;br /&gt;
&lt;br /&gt;
variable bat_soft = where(bat.rate &amp;lt;= 0.09);&lt;br /&gt;
variable bat_uncat = where(bat.rate &amp;gt; 0.09);&lt;br /&gt;
&lt;br /&gt;
%%MAXI&lt;br /&gt;
variable maxi = ascii_read_table(&amp;quot;../data/&amp;quot;+maxiname,&lt;br /&gt;
				 [{&amp;quot;%F&amp;quot;,&amp;quot;time&amp;quot;},{&amp;quot;%F&amp;quot;,&amp;quot;rate&amp;quot;},{&amp;quot;%F&amp;quot;,&amp;quot;err&amp;quot;},&lt;br /&gt;
				  {&amp;quot;%F&amp;quot;,&amp;quot;lo&amp;quot;},{&amp;quot;%F&amp;quot;,&amp;quot;loerr&amp;quot;},&lt;br /&gt;
				  {&amp;quot;%F&amp;quot;,&amp;quot;mi&amp;quot;},{&amp;quot;%F&amp;quot;,&amp;quot;mierr&amp;quot;},&lt;br /&gt;
				  {&amp;quot;%F&amp;quot;,&amp;quot;hi&amp;quot;},{&amp;quot;%F&amp;quot;,&amp;quot;hierr&amp;quot;}]);&lt;br /&gt;
&lt;br /&gt;
struct_filter(maxi,where(maxi.time &amp;lt; 56240));&lt;br /&gt;
&lt;br /&gt;
variable maxi_hard = where(maxi.lo &amp;lt;= 1.4*maxi.mi/maxi.lo);&lt;br /&gt;
variable maxi_tran = where(1.4*maxi.mi/maxi.lo &amp;lt; maxi.lo &amp;lt;= 8./3.*maxi.mi/maxi.lo);&lt;br /&gt;
variable maxi_soft = where(maxi.lo &amp;gt; 8./3.*maxi.mi/maxi.lo);&lt;br /&gt;
&lt;br /&gt;
%%GBM&lt;br /&gt;
()=evalfile(&amp;quot;../gbm/init_gbm.sl&amp;quot;);&lt;br /&gt;
variable gbm = @d;&lt;br /&gt;
%struct_filter(gbm, where(gbm.nr_occ&amp;gt;10));&lt;br /&gt;
struct_filter(gbm,where(gbm.mjd_start &amp;lt; 56240));&lt;br /&gt;
variable gbm_soft = where(1e-3*get_struct_field (gbm, cnfg.flux[1]) &amp;lt; 0.6);&lt;br /&gt;
variable gbm_uncat = where(1e-3*get_struct_field (gbm, cnfg.flux[1]) &amp;gt; 0.6);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%axis labels&lt;br /&gt;
variable mino = [1996:2013];&lt;br /&gt;
variable maj = [1996:2013]+0.5;&lt;br /&gt;
variable extramin = Double_Type[0];&lt;br /&gt;
variable q,i;&lt;br /&gt;
variable ticc=String_Type[length(maj)];&lt;br /&gt;
_for i (0,2013-1996-1,1){&lt;br /&gt;
  ticc[i]=string(mino[i]);&lt;br /&gt;
    _for q (1,11,1){&lt;br /&gt;
        extramin = [extramin,1996+i+q/12.];&lt;br /&gt;
          }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable plg = xfig_plot_new(width,hh*5./7.);&lt;br /&gt;
plg.world1(mjdmin,mjdmax,-1,4);&lt;br /&gt;
plg.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	      yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,&lt;br /&gt;
	      -1,4);&lt;br /&gt;
plg.x1axis(;off);&lt;br /&gt;
plg.x2axis(;major = maj, minor = mino, ticlabels = ticc,&lt;br /&gt;
	              major_len=0,minor_len=0.2,minor_width=2&lt;br /&gt;
	              );&lt;br /&gt;
plg.yaxis(;ticlabels=0,major=0,minor=0);&lt;br /&gt;
_for i (0,length(pca_hard)-1,1){&lt;br /&gt;
  plg.plot([tt[pca_hard[i]],tt[pca_hard[i]]],[2,3];color=cl_hard);  &lt;br /&gt;
};&lt;br /&gt;
_for i (0,length(pca_tran)-1,1){&lt;br /&gt;
  plg.plot([tt[pca_tran[i]],tt[pca_tran[i]]],[1,2];color=cl_tran);  &lt;br /&gt;
};&lt;br /&gt;
_for i (0,length(pca_soft)-1,1){&lt;br /&gt;
  plg.plot([tt[pca_soft[i]],tt[pca_soft[i]]],[0,1];color=cl_soft);  &lt;br /&gt;
};&lt;br /&gt;
plg.ylabel(&amp;quot;\begin{center}times of\\pointed \\\textsl{RXTE} obs.\end{center}&amp;quot;R;rotate=-90);&lt;br /&gt;
plg.x2label(&amp;quot;year&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
variable pl_asm = xfig_plot_new(width,hh);&lt;br /&gt;
pl_asm.world1(mjdmin,mjdmax,asmmin,asmmax);&lt;br /&gt;
pl_asm.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	      yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,&lt;br /&gt;
	      asmmin,asmmax);&lt;br /&gt;
pl_asm.x2axis(;off);&lt;br /&gt;
pl_asm.y2axis(;ticlabels=0);&lt;br /&gt;
pl_asm.plot(asm.time[asm_tran],asm.rate[asm_tran];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_tran);&lt;br /&gt;
pl_asm.plot(asm.time[asm_soft],asm.rate[asm_soft];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_soft);&lt;br /&gt;
pl_asm.plot(asm.time[asm_hard],asm.rate[asm_hard];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_hard);&lt;br /&gt;
pl_asm.plot(asm_late.time,asm_late.rate;sym=&amp;quot;point&amp;quot;,size=0.1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.plot([e1,e1],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asm.plot([e2,e2],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asm.plot([e3,e3],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asm.plot([e4,e4],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asm.plot([mjdmin,e1],[asmarrow,asmarrow];&lt;br /&gt;
	    line=0, forward_arrow, arrow_thickness =1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.plot([e1,e2],[asmarrow,asmarrow];&lt;br /&gt;
	    line=0, forward_arrow, backward_arrow, arrow_thickness =1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.plot([e2,e3],[asmarrow,asmarrow];&lt;br /&gt;
	    line=0, forward_arrow, backward_arrow, arrow_thickness =1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.plot([e3,e4],[asmarrow,asmarrow];&lt;br /&gt;
	    line=0, forward_arrow, backward_arrow, arrow_thickness =1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.plot([e4,mjdmax],[asmarrow,asmarrow];&lt;br /&gt;
	    line=0, backward_arrow, arrow_thickness =1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asm.xylabel((mjdmin+e1)/2.,ptext,&amp;quot;I&amp;quot;;depth=10);&lt;br /&gt;
pl_asm.xylabel((e1+e2)/2.,ptext,&amp;quot;II&amp;quot;;depth=10);&lt;br /&gt;
pl_asm.xylabel((e2+e3)/2.,ptext,&amp;quot;period III&amp;quot;;depth=10);&lt;br /&gt;
pl_asm.xylabel((e3+e4)/2.,ptext,&amp;quot;period IV&amp;quot;;depth=10);&lt;br /&gt;
pl_asm.xylabel((e4+mjdmax)/2.,ptext,&amp;quot;period V&amp;quot;;depth=10);&lt;br /&gt;
pl_asm.ylabel(&amp;quot;\begin{center}\textsl{RXTE}-ASM \\1.5--12\,keV \\$[$cps$]$\end{center}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
variable pl_asmh = xfig_plot_new(width,hh);&lt;br /&gt;
pl_asmh.world1(mjdmin,mjdmax,0.08,15;ylog);&lt;br /&gt;
pl_asmh.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	      yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,&lt;br /&gt;
	      0.08,10;ylog);&lt;br /&gt;
pl_asmh.x2axis(;major = maj, minor = mino, ticlabels = ticc,&lt;br /&gt;
	              major_len=0,minor_len=0.2,minor_width=2&lt;br /&gt;
	              );&lt;br /&gt;
pl_asmh.y2axis(;ticlabels=0);&lt;br /&gt;
%pl_asmh.y1axis(;format=&amp;quot;$10^{%.1f}$&amp;quot;R);&lt;br /&gt;
pl_asmh.plot(asm.time[asm_tran],asm.rate_c[asm_tran]/asm.rate_a[asm_tran];&lt;br /&gt;
	     sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_tran);&lt;br /&gt;
pl_asmh.plot(asm.time[asm_soft],asm.rate_c[asm_soft]/asm.rate_a[asm_soft];&lt;br /&gt;
	     sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_soft);&lt;br /&gt;
pl_asmh.plot(asm.time[asm_hard],asm.rate_c[asm_hard]/asm.rate_a[asm_hard];&lt;br /&gt;
	     sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_hard);&lt;br /&gt;
pl_asmh.plot(asm_late.time,asm_late.rate_c/asm_late.rate_a;&lt;br /&gt;
	     sym=&amp;quot;point&amp;quot;,size=0.1,color=&amp;quot;gray&amp;quot;);&lt;br /&gt;
pl_asmh.plot([e1,e1],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asmh.plot([e2,e2],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asmh.plot([e3,e3],[asmmin,asmmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_asmh.plot([e4,e4],[asmmin,asmmax];line=1,width=2,depth=10); &lt;br /&gt;
pl_asmh.ylabel(&amp;quot;\begin{center}\textsl{RXTE}-ASM \\ hardness \\ (C$/$A)\end{center}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable pl_bat = xfig_plot_new(width,hh);&lt;br /&gt;
pl_bat.world(mjdmin,mjdmax,batmin,batmax);&lt;br /&gt;
pl_bat.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	      yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,batmin,batmax);&lt;br /&gt;
pl_bat.y2axis(;ticlabels=0,tic_depth=3);&lt;br /&gt;
pl_bat.x2axis(;major = maj, minor = mino, ticlabels = ticc,&lt;br /&gt;
	              major_len=0,minor_len=0.2,minor_width=2&lt;br /&gt;
	              );&lt;br /&gt;
pl_bat.plot(bat.time[bat_soft],bat.rate[bat_soft];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_soft);&lt;br /&gt;
pl_bat.plot(bat.time[bat_uncat],bat.rate[bat_uncat];sym=&amp;quot;point&amp;quot;,size=0.1);&lt;br /&gt;
pl_bat.plot([e1,e1],[batmin,batmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_bat.plot([e2,e2],[batmin,batmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_bat.plot([e3,e3],[batmin,batmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_bat.plot([e4,e4],[batmin,batmax];line=1,width=2,depth=10);&lt;br /&gt;
pl_bat.plot([mjdmin,mjdmax],[0,0];color=&amp;quot;gray&amp;quot;,line=1);&lt;br /&gt;
pl_bat.y1axis(;format=&amp;quot;%.1f&amp;quot;,tic_depth=3);&lt;br /&gt;
pl_bat.ylabel(&amp;quot;\begin{center}\textsl{Swift}-BAT \\ 15--50\,keV \\$[$cps/cm$^2]$\end{center}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
variable pl_maxi = xfig_plot_new(width,hh);&lt;br /&gt;
pl_maxi.world(mjdmin,mjdmax,0,5.5);&lt;br /&gt;
pl_maxi.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	       yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,0,6);&lt;br /&gt;
pl_maxi.x2axis(;major = maj, minor = mino, ticlabels = ticc,&lt;br /&gt;
	              major_len=0,minor_len=0.2,minor_width=2&lt;br /&gt;
	              );&lt;br /&gt;
pl_maxi.y2axis(;ticlabels=0);&lt;br /&gt;
pl_maxi.plot(maxi.time[maxi_tran],maxi.rate[maxi_tran];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_tran);&lt;br /&gt;
pl_maxi.plot(maxi.time[maxi_soft],maxi.rate[maxi_soft];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_soft);&lt;br /&gt;
pl_maxi.plot(maxi.time[maxi_hard],maxi.rate[maxi_hard];sym=&amp;quot;point&amp;quot;,size=0.1,color=cl_hard);&lt;br /&gt;
pl_maxi.plot([e1,e1],[0,6];line=1,width=2,depth=10);&lt;br /&gt;
pl_maxi.plot([e2,e2],[0,6];line=1,width=2,depth=10);&lt;br /&gt;
pl_maxi.plot([e3,e3],[0,6];line=1,width=2,depth=10);&lt;br /&gt;
pl_maxi.plot([e4,e4],[0,6];line=1,width=2,depth=10); &lt;br /&gt;
pl_maxi.ylabel(&amp;quot;\begin{center}MAXI \\ 2--20\,keV \\$[$cps/cm$^2]$\end{center}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
variable pl_gbm = xfig_plot_new(width,hh);&lt;br /&gt;
pl_gbm.world(mjdmin,mjdmax,-0.4,1.9);&lt;br /&gt;
pl_gbm.world2(yearmin.year+(yearmin.month-1)/12.+yearmin.day/365.,&lt;br /&gt;
	       yearmax.year+(yearmax.month-1)/12.+yearmax.day/365.,-0.4,1.9);&lt;br /&gt;
pl_gbm.x2axis(;major = maj, minor = mino, ticlabels = ticc,&lt;br /&gt;
	              major_len=0,minor_len=0.2,minor_width=2&lt;br /&gt;
	              );&lt;br /&gt;
pl_gbm.y1axis(;format=&amp;quot;%.1f&amp;quot;,tic_depth=3);&lt;br /&gt;
pl_gbm.y2axis(;ticlabels=0,tic_depth=3);&lt;br /&gt;
pl_gbm.plot(0.5*(gbm.mjd_start + gbm.mjd_stop)[gbm_soft],&lt;br /&gt;
	    1e-3*get_struct_field (gbm, cnfg.flux[1])[gbm_soft],&lt;br /&gt;
	    0.5* (gbm.mjd_stop  - gbm.mjd_start)[gbm_soft],&lt;br /&gt;
	    1e-3*get_struct_field (gbm, cnfg.err[1])[gbm_soft];&lt;br /&gt;
	                    sym = &amp;quot;point&amp;quot;,color=cl_soft);&lt;br /&gt;
pl_gbm.plot(0.5*(gbm.mjd_start + gbm.mjd_stop)[gbm_uncat],&lt;br /&gt;
	    1e-3*get_struct_field (gbm, cnfg.flux[1])[gbm_uncat],&lt;br /&gt;
	    0.5* (gbm.mjd_stop  - gbm.mjd_start)[gbm_uncat],&lt;br /&gt;
	    1e-3*get_struct_field (gbm, cnfg.err[1])[gbm_uncat];&lt;br /&gt;
	                    sym = &amp;quot;point&amp;quot;);&lt;br /&gt;
pl_gbm.plot([mjdmin,mjdmax],[0,0];color=&amp;quot;gray&amp;quot;,line=1);&lt;br /&gt;
pl_gbm.plot([e1,e1],[-0.4,1.9];line=1,width=2,depth=10);&lt;br /&gt;
pl_gbm.plot([e2,e2],[-0.4,1.9];line=1,width=2,depth=10);&lt;br /&gt;
pl_gbm.plot([e3,e3],[-0.4,1.9];line=1,width=2,depth=10);&lt;br /&gt;
pl_gbm.plot([e4,e4],[-0.4,1.9];line=1,width=2,depth=10);&lt;br /&gt;
pl_gbm.ylabel(&amp;quot;\begin{center}GBM \\ 25--50\,keV \\ $[$Crab$]$\end{center}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
variable comp = xfig_new_vbox_compound(plg,&lt;br /&gt;
				       xfig_multiplot(pl_asm,pl_asmh,&lt;br /&gt;
						      pl_maxi,&lt;br /&gt;
						      pl_bat,pl_gbm;&lt;br /&gt;
						      xlabel=&amp;quot;MJD&amp;quot;));&lt;br /&gt;
comp.render(&amp;quot;monster.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;STACK:&amp;quot;);&lt;br /&gt;
_print_stack;&lt;br /&gt;
exit;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1535</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1535"/>
		<updated>2018-05-17T13:35:38Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Multipanel spectral model decomposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=isis:slxfig:monsterlightcurve]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=Model decomp (xfig example)]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Model_decomp_(xfig_example)&amp;diff=1534</id>
		<title>Model decomp (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Model_decomp_(xfig_example)&amp;diff=1534"/>
		<updated>2018-05-17T13:35:00Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Model decomp to Model decomp (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
&lt;br /&gt;
[[File:multipanel_decomposition.png|800px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Spectral data and models of the best fits have been stored in tables using write_plot() and eval_fun_keV() in a file structure of shape /userdata/data/user/ &amp;quot;source&amp;quot; / &amp;quot;model&amp;quot; /decomposition/ &amp;quot;component&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/env isis-script&lt;br /&gt;
&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
variable COLOR = [&amp;quot;dimgray&amp;quot;,&amp;quot;darkgray&amp;quot;,&amp;quot;lightgrey&amp;quot;];&lt;br /&gt;
variable MCOLOR = [&amp;quot;darkorange&amp;quot;,&amp;quot;blue&amp;quot;,&amp;quot;mediumaquamarine&amp;quot;,&amp;quot;purple&amp;quot;,&amp;quot;black&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
% Lists of object names and model components to automatically build data paths&lt;br /&gt;
variable comp_list = {&amp;quot;tbnew_feo*relxilllp&amp;quot;,&amp;quot;tbnew_feo*powerlaw&amp;quot;,&amp;quot;tbnew_feo*xillver&amp;quot;,&amp;quot;complete_model&amp;quot;,&amp;quot;absorbed_model&amp;quot;};&lt;br /&gt;
variable namelist = {&amp;quot;ark120&amp;quot;,&amp;quot;pds456&amp;quot;,&amp;quot;fairall9&amp;quot;, &amp;quot;ngc1365&amp;quot;, &amp;quot;3c390_3&amp;quot;, &amp;quot;3c382&amp;quot;};&lt;br /&gt;
variable tex_name = {&amp;quot;Ark 120&amp;quot;,&amp;quot;PDS 456&amp;quot;,&amp;quot;Fairall 9&amp;quot;, &amp;quot;NGC 1365&amp;quot;, &amp;quot;3C390.3&amp;quot;, &amp;quot;3C382&amp;quot;};&lt;br /&gt;
variable detconst = {{1,1/1.08,1/1.1},{1,1/0.68,1/0.75},{1,1/0.995,1/1.02},{1,1/0.96,1/0.98},{1,1/1.062567,1/1.115621},{1,1/0.8153,1/0.7853389}};&lt;br /&gt;
&lt;br /&gt;
%-------main-loop-over-namelist---------------&lt;br /&gt;
variable panel = Struct_Type[length(namelist)];&lt;br /&gt;
variable i,j, lo, hi, val, err, err_max, err_min;&lt;br /&gt;
&lt;br /&gt;
for(j=0;j&amp;lt;length(namelist);j++){&lt;br /&gt;
&lt;br /&gt;
	% initialize panel j&lt;br /&gt;
	panel[j] = xfig_plot_new(12, 9);&lt;br /&gt;
	panel[j].world(0.5,80,5e-08,0.1; xlog=1, ylog=1);&lt;br /&gt;
	panel[j].ylabel(`Flux \footnotesize[s$^{-1}$\,cm$^{-2}$\,keV$^{-1}$]`);&lt;br /&gt;
	panel[j].xylabel(0.95,0.9,tex_name[j],0.5,0; world0);&lt;br /&gt;
&lt;br /&gt;
	variable write_folder = &amp;quot;/userdata/data/fink/&amp;quot;+namelist[j]+&amp;quot;/fit_relxilllp/decomposition/&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	% plot data from three detectors in the background, corrected for according detector constant&lt;br /&gt;
	for(i=0;i&amp;lt;=2;i++){&lt;br /&gt;
		(lo, hi, val, err) = readcol(write_folder+&amp;quot;data_&amp;quot;+string(i)+&amp;quot;.dat&amp;quot;, 1, 2, 3, 4);&lt;br /&gt;
		panel[j].plot((lo+hi)/2., val*detconst[j][i], err*detconst[j][i]; sym=&amp;quot;point&amp;quot;, size=-1, eb_factor=0, color=COLOR[i]);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	% plot model components (exception for pds456)&lt;br /&gt;
	for(i=0;i&amp;lt;length(comp_list);i++){&lt;br /&gt;
		if(not(comp_list[i]==&amp;quot;tbnew_feo*xillver&amp;quot; &amp;amp;&amp;amp; namelist[j] == &amp;quot;pds456&amp;quot;)){&lt;br /&gt;
		(lo, hi, val) = readcol(write_folder+comp_list[i]+&amp;quot;.dat&amp;quot;, 1, 2, 3);&lt;br /&gt;
		panel[j].plot((lo+hi)/2, val; line=0, eb_factor=0, size=0.01, color=MCOLOR[i], depth=10-i);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% some model labels&lt;br /&gt;
variable ypos = 0.42, ystep = 0.08;&lt;br /&gt;
panel[1].xylabel(0.05, ypos - 0*ystep, &amp;quot;Powerlaw&amp;quot;, -0.5, 0; world0, color = MCOLOR[1]);&lt;br /&gt;
panel[1].xylabel(0.05, ypos - 1*ystep, &amp;quot;CDR&amp;quot;,-0.5,0; world0, color = MCOLOR[2]);&lt;br /&gt;
panel[1].xylabel(0.05, ypos - 2*ystep, &amp;quot;Lamppost-RR&amp;quot;,-0.5,0; world0, color = MCOLOR[0]);&lt;br /&gt;
panel[1].xylabel(0.05, ypos - 3*ystep, &amp;quot;Powerlaw + Reflection&amp;quot;,-0.5,0; world0, color = MCOLOR[3]);&lt;br /&gt;
panel[1].xylabel(0.05, ypos - 4*ystep, &amp;quot;Full Absorbed Model&amp;quot;,-0.5,0; world0, color = MCOLOR[4]);&lt;br /&gt;
&lt;br /&gt;
%---------render-all--------------&lt;br /&gt;
variable multi = xfig_multiplot(panel; xlabel=`Energy [keV]`, cols=2);&lt;br /&gt;
multi.render(&amp;quot;multipanel_decomposition.pdf&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
quit;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1533</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1533"/>
		<updated>2018-05-17T13:33:01Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=isis:slxfig:monsterlightcurve]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d (xfig example)]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=isis:slxfig:model_decomp]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3d_(xfig_example)&amp;diff=1532</id>
		<title>Object3d (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Object3d_(xfig_example)&amp;diff=1532"/>
		<updated>2018-05-17T13:31:40Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Object3d to Object3d (xfig example) without leaving a redirect&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
&lt;br /&gt;
===== Plotting in 3D =====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
% -*- mode: slang; mode: fold -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
require(&amp;quot;lbscripts&amp;quot;);&lt;br /&gt;
()=evalfile(&amp;quot;/home/falkner/work/lightbending/lbscripts.git/modules/ptrace.sl&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
%%%%% GLOBAL PARAMETER: =======================================================&lt;br /&gt;
&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\renewcommand{\vec}[1]{\ensuremath{\mathbf{#1}}}&amp;quot;R);&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: modified Spherical angles&lt;br /&gt;
variable cam1 = 20*PI/180.; % cam1 = PI/2 -  thetaa&lt;br /&gt;
variable cam2 =  0*PI/180.; % cam2 = PI - phi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% LIGHT BENDING:&lt;br /&gt;
variable Mns = 1.44*2e30;&lt;br /&gt;
%variable Rns = 10e3; % Physical radius of the neutron star&lt;br /&gt;
variable rs = 2*Const_G*Mns/sqr(Const_c)*1e1; % Schwarzschild radius&lt;br /&gt;
variable r = 15e3; % radius of photon emission&lt;br /&gt;
variable u = rs/r;&lt;br /&gt;
&lt;br /&gt;
%%% GEOMETRY:&lt;br /&gt;
variable R = 1; % radius of the sphere [BUG HERE FOR R /= 1]&lt;br /&gt;
&lt;br /&gt;
variable i = 60*PI/180.; % Inclination of the observer&lt;br /&gt;
&lt;br /&gt;
variable theta =  45*PI/180.; % Spot position&lt;br /&gt;
variable phi   = 220*PI/180.; % Spot position&lt;br /&gt;
&lt;br /&gt;
%%% PLOT DIMENSION&lt;br /&gt;
variable size = 12;&lt;br /&gt;
variable xmin = -1.00*R;&lt;br /&gt;
variable xmax =  2.20*R;&lt;br /&gt;
variable ymin = -0.55*R;&lt;br /&gt;
variable ymax =  2.10*R;&lt;br /&gt;
&lt;br /&gt;
%%% PLOT COLORS&lt;br /&gt;
variable col_cbg = [&amp;quot;#88CCEE&amp;quot;,&lt;br /&gt;
		    &amp;quot;#999933&amp;quot;,&lt;br /&gt;
		    &amp;quot;#AA4499&amp;quot;,&lt;br /&gt;
		    &amp;quot;#332288&amp;quot;&lt;br /&gt;
		   ];&lt;br /&gt;
% variable photon1 = col_cbg[2];&lt;br /&gt;
% variable photon2 = col_cbg[3];&lt;br /&gt;
% variable obsplane = col_cbg[1];&lt;br /&gt;
variable photon1 = CB_COLOR_SCHEME[1];&lt;br /&gt;
variable photon2 = CB_COLOR_SCHEME[2];&lt;br /&gt;
variable obsplane = &amp;quot;#505050&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PHYSIKAL VECTORS ==========================================================&lt;br /&gt;
&lt;br /&gt;
%%% CAMERA: Basis vectors&lt;br /&gt;
variable c1 = vector_rotate( vector(1,0,0), vector(1,0,0), cam1 );&lt;br /&gt;
variable c2 = vector_rotate( vector(0,1,0), vector(1,0,0), cam1 );&lt;br /&gt;
variable c3 = vector_rotate( vector(0,0,1), vector(1,0,0), cam1 );&lt;br /&gt;
c1 = vector_rotate( c1, vector(0,0,1), cam2 );&lt;br /&gt;
c2 = vector_rotate( c2, vector(0,0,1), cam2 );&lt;br /&gt;
c3 = vector_rotate( c3, vector(0,0,1), cam2 );&lt;br /&gt;
&lt;br /&gt;
%%% AXIS&lt;br /&gt;
variable ex = vector( R, 0, 0 );&lt;br /&gt;
variable ey = vector( 0, R, 0 );&lt;br /&gt;
variable ez = vector( 0, 0, R );&lt;br /&gt;
&lt;br /&gt;
%%% OBSERVER&lt;br /&gt;
variable k = vector( sin(i), 0, cos(i) );&lt;br /&gt;
%%% SPOT&lt;br /&gt;
variable n  = vector( 1, phi, theta ; sph );&lt;br /&gt;
&lt;br /&gt;
%%% LIGHT BENDING CALCULATIONS&lt;br /&gt;
%%% Attention: simple calculations based on beloborodov 2002, i.e., it&lt;br /&gt;
%%% does not work for all settings (where alpha &amp;gt; 90°)&lt;br /&gt;
&lt;br /&gt;
variable lbpar = struct{&lt;br /&gt;
  nmr = 10,&lt;br /&gt;
  nma = 100,&lt;br /&gt;
  rmin = 0.95*r/rs,&lt;br /&gt;
  rmax = 1.05*r/rs,&lt;br /&gt;
  lbmeth = &amp;quot;belob&amp;quot;,&lt;br /&gt;
  tdelay=0,&lt;br /&gt;
};&lt;br /&gt;
variable lbmap = lb_psir2b_map( lbpar );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%% Solution 1:&lt;br /&gt;
variable psi   = acos( dotprod(k,n) ); &lt;br /&gt;
variable alpha = acos( 1 - ( 1-cos(psi) )*( 1-u ) );&lt;br /&gt;
alpha = lb_interp( lbmap, r/rs, psi, struct{ a, b } ).a;&lt;br /&gt;
&lt;br /&gt;
variable b     = R*sin(alpha)/sqrt(1-u);&lt;br /&gt;
b = lb_interp( lbmap, r/rs, psi, struct{ a, b } ).b*rs/r*R;&lt;br /&gt;
&lt;br /&gt;
variable crho  = ( ( k^(n^k) ) * ey )/abs( k^(n^k) );&lt;br /&gt;
variable srho  = abs( ( k^(n^k) ) ^ ey )/abs( k^(n^k) );&lt;br /&gt;
&lt;br /&gt;
variable k0 = unit_vector(vector_rotate( n, crossprod(n,k), alpha ));&lt;br /&gt;
&lt;br /&gt;
%% Solution 2:&lt;br /&gt;
%%   1 - cos(alpha) = ( 1 - cos(psi) )*(1-u)&lt;br /&gt;
%%   b = R*sin(alpha) / sqrt(1-u)&lt;br /&gt;
variable _psi   = 2*PI - psi;&lt;br /&gt;
variable _alpha = acos( 1 - ( 1-cos(_psi) )*( 1-u ) );;&lt;br /&gt;
_alpha = lb_interp( lbmap, r/rs, _psi, struct{ a, b } ).a;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
variable fac = rs/r*R;&lt;br /&gt;
variable _b     = R*sin(_alpha)/sqrt(1-u);&lt;br /&gt;
_b = lb_interp( lbmap, r/rs, _psi, struct{ a, b } ).b*fac;&lt;br /&gt;
variable _rp = lb_p_b( _b/fac )*fac;&lt;br /&gt;
variable _pp = lb_psiper_u_belob_( fac/_rp );&lt;br /&gt;
&lt;br /&gt;
variable _k0 = unit_vector(vector_rotate( n, crossprod(n,k), -_alpha ));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% FUNCTIONS =================================================================&lt;br /&gt;
%%% Must be defined here, as functions require some global variables!&lt;br /&gt;
&lt;br /&gt;
% Projection of vectors onto the camera plane&lt;br /&gt;
define P( v ){ %{{{&lt;br /&gt;
  variable vec = @v;&lt;br /&gt;
  if( typeof(vec)== Array_Type ){&lt;br /&gt;
    vec = struct_array_2_struct_of_arrays( v );&lt;br /&gt;
  }&lt;br /&gt;
  variable pro = vector_change_basis( vec, c1, c2, c3 );&lt;br /&gt;
  return pro;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% Return x,z component of Projection&lt;br /&gt;
define PP( v ){ %{{{&lt;br /&gt;
  variable p = P(v);&lt;br /&gt;
  return p.x, p.z;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% GREAT CIRCLE between 2 Vector&lt;br /&gt;
define GC( a, b ){ %{{{&lt;br /&gt;
  &lt;br /&gt;
  variable N = qualifier(&amp;quot;N&amp;quot;,100);&lt;br /&gt;
  variable R = qualifier_exists(&amp;quot;R&amp;quot;)? 1:0;&lt;br /&gt;
  &lt;br /&gt;
  variable na = unit_vector(a);&lt;br /&gt;
  variable nb = unit_vector(b);&lt;br /&gt;
&lt;br /&gt;
  variable rotangle = [0:acos(dotprod(na,nb))-R*2*PI:#N];&lt;br /&gt;
  variable rotvec   = unit_vector( crossprod( a, b ) );&lt;br /&gt;
&lt;br /&gt;
  variable gc = vector_rotate( na, rotvec, rotangle );&lt;br /&gt;
&lt;br /&gt;
  return gc;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
% PHOTON TRAJECTORY&lt;br /&gt;
define T(p){ %{{{&lt;br /&gt;
  variable B = b/R*r;&lt;br /&gt;
  variable X = rs*( 1 - cos(p))/(2*( 1 + cos(p)));&lt;br /&gt;
  variable trace = sqrt( sqr(X) + sqr(B/sin(p)) ) - X;&lt;br /&gt;
  return trace/r*R;&lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
define PT(){ %{{{&lt;br /&gt;
  variable brs = b/R*r/rs;&lt;br /&gt;
  variable pt = lb_ptrace_belob( brs ; n=N, pmax=psi );&lt;br /&gt;
  &lt;br /&gt;
  variable v = vector( pt.r*rs/r*R, [0:0:#N], -pt.p ; sph );&lt;br /&gt;
  v = vector_rotate( v, ey, i );&lt;br /&gt;
  v = vector_rotate( v, k, -atan2(crho,srho) );&lt;br /&gt;
&lt;br /&gt;
  return v;  &lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
define _PT(){ %{{{&lt;br /&gt;
  variable brs = _b/R*r/rs;&lt;br /&gt;
&lt;br /&gt;
  variable pt = lb_ptrace_belob( brs ; n=N, pmax=2*PI-psi );&lt;br /&gt;
  &lt;br /&gt;
  variable v = vector( pt.r*rs/r*R, [0:0:#N], -pt.p ; sph );&lt;br /&gt;
  v = vector_rotate( v, ey, i );&lt;br /&gt;
  v = vector_rotate( v, k, PI-atan2(crho,srho) );&lt;br /&gt;
&lt;br /&gt;
  return v;  &lt;br /&gt;
}&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% PREPARE PLOT ==============================================================&lt;br /&gt;
variable s = 1.5;&lt;br /&gt;
variable ls= s*1.06;&lt;br /&gt;
variable N = 300;&lt;br /&gt;
&lt;br /&gt;
% arrow head&lt;br /&gt;
variable ARROW = xfig_create_arrow(;arrow_type=2,&lt;br /&gt;
				   arrow_style=1,&lt;br /&gt;
				   arrow_width=8,&lt;br /&gt;
				   arrow_heigth=64,&lt;br /&gt;
				   arrow_thickness=2&lt;br /&gt;
				  );&lt;br /&gt;
variable AXIS = @ARROW;&lt;br /&gt;
AXIS.arrow_style=0;&lt;br /&gt;
AXIS.arrow_type=0;&lt;br /&gt;
&lt;br /&gt;
% circle&lt;br /&gt;
variable xycirc = vector( [R:R:#N], [0:2*PI:#N], [PI/2.:PI/2.:#N]; sph );&lt;br /&gt;
variable xzcircn = vector( [R:R:#N], [0:0:#N], PI/2.*[-1:1:#N]; sph );&lt;br /&gt;
variable xzcircs = vector( [R:R:#N], [0:0:#N], PI/2.*[1:3:#N]; sph );&lt;br /&gt;
&lt;br /&gt;
% n help lines&lt;br /&gt;
variable ncirc  = vector( [R:R:#N], [phi:phi:#N], [0:PI/2:#N]; sph );&lt;br /&gt;
variable nline  = vector( [0:R:#N], [phi:phi:#N], [PI/2:PI/2:#N];sph);&lt;br /&gt;
&lt;br /&gt;
% kn circ&lt;br /&gt;
variable kncirc = R*GC( unit_vector(n), unit_vector(k) );&lt;br /&gt;
variable nkcirc = R*GC( unit_vector(n), unit_vector(k) ; R );&lt;br /&gt;
&lt;br /&gt;
%%% PLOT ======================================================================&lt;br /&gt;
variable xp = xfig_plot_new(size,(ymax-ymin)/(xmax-xmin)*size);&lt;br /&gt;
xp.world( xmin, xmax, ymin, ymax ; padx=0.0, pady=0.0 );&lt;br /&gt;
xp.axis(;off);&lt;br /&gt;
&lt;br /&gt;
% axis&lt;br /&gt;
xp.plot( PP([0,s]*R*ex); forward_arrow=AXIS );&lt;br /&gt;
xp.xylabel( PP(ls*R*ex), &amp;quot;$x$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([0,s]*ey) );&lt;br /&gt;
%xp.xylabel( PP(ls*ey), &amp;quot;$y$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([0,s]*R*ez); forward_arrow=AXIS );&lt;br /&gt;
xp.xylabel( PP(ls*ez), &amp;quot;$z$&amp;quot;R  );&lt;br /&gt;
&lt;br /&gt;
% circles&lt;br /&gt;
xp.plot( PP(xzcircn) ; line=0, width=2 );&lt;br /&gt;
xp.plot( PP(xzcircs) ; line=0, width=2 );&lt;br /&gt;
xp.plot( PP(xycirc)  ; line=0, width=2 );&lt;br /&gt;
&lt;br /&gt;
% rotation&lt;br /&gt;
variable rot = 0.8*s*R*ez+vector( 0.15*[R:R:#N], PI/180*[-60:265:#N], [PI/2.:PI/2.:#N]; sph );&lt;br /&gt;
xp.plot( PP(rot); forward_arrow=AXIS );&lt;br /&gt;
&lt;br /&gt;
% observer&lt;br /&gt;
xp.plot( PP([0,1]*R*k) ; line=1 );&lt;br /&gt;
xp.plot( PP([1,s]*R*k) ; line=0 );&lt;br /&gt;
xp.xylabel( PP(ls*k), &amp;quot;$\vec{k}$&amp;quot;R, 1.5, 1.5 );&lt;br /&gt;
xp.plot( PP([1,s]*R*k); forward_arrow=ARROW );&lt;br /&gt;
&lt;br /&gt;
% observer plane&lt;br /&gt;
variable deltap = 1.8*R;&lt;br /&gt;
variable oplane = 1.2*R*vector( [-1, 1, 1,-1,-1],&lt;br /&gt;
			  [-1,-1, 1, 1,-1],&lt;br /&gt;
			  [ 0, 0, 0, 0, 0]&lt;br /&gt;
			);&lt;br /&gt;
oplane.z += deltap;&lt;br /&gt;
oplane = vector_rotate( oplane, ey, i );&lt;br /&gt;
xp.plot( PP(oplane); depth=40, width=3, color=obsplane );&lt;br /&gt;
%variable oplab = 1.8*R*vector( -.01, -.95, 0 );&lt;br /&gt;
variable oplab = 1.8*R*vector( .60, 0, 0 );&lt;br /&gt;
oplab.z += deltap;&lt;br /&gt;
oplab = vector_rotate( oplab, ey, i );&lt;br /&gt;
%xp.xylabel( PP(oplab), &amp;quot;observer plane&amp;quot;R ; rotate=-0.97*i*180/PI, color=obsplane  );&lt;br /&gt;
xp.xylabel( PP(oplab), &amp;quot;{\footnotesize observer plane}&amp;quot;R ; rotate=90, color=obsplane  );&lt;br /&gt;
variable ocirc = vector( [R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
ocirc.z += deltap;&lt;br /&gt;
ocirc = vector_rotate( ocirc, ey, i );&lt;br /&gt;
xp.plot( PP(ocirc); color=obsplane );&lt;br /&gt;
variable A = 1.15*s*R*vector( [0,0],[0,1],[0,0] );&lt;br /&gt;
A.z += deltap;&lt;br /&gt;
A = vector_rotate( A, ey, i );&lt;br /&gt;
xp.plot( PP(A) ; forward_arrow=AXIS, color=obsplane );&lt;br /&gt;
xp.xylabel( PP(struct_of_arrays_2_struct_array(A)[-1]), &amp;quot;$A$&amp;quot;R, -.5, 1.2;color=obsplane);&lt;br /&gt;
variable B = s*R*vector( [0,-1],[0,0],[0,0] );&lt;br /&gt;
B.z += deltap;&lt;br /&gt;
B = vector_rotate( B, ey, i );&lt;br /&gt;
xp.plot( PP(B) ; forward_arrow=AXIS,color=obsplane );&lt;br /&gt;
xp.xylabel( PP(struct_of_arrays_2_struct_array(B)[-1]), &amp;quot;$B$&amp;quot;R, -.4, 2.2;color=obsplane );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;
%%% IMPACT A &amp;amp; B&lt;br /&gt;
%%%%%%%%%%%%%%%%&lt;br /&gt;
&lt;br /&gt;
% Line in OP from center to impact point 1&lt;br /&gt;
variable IB = b*vector( [0,1], PI/2+[0,PI/2-atan2(crho,srho)], PI/2*[1,1] ; sph );&lt;br /&gt;
variable IB2 = @IB;&lt;br /&gt;
IB.z += deltap;&lt;br /&gt;
IB = vector_rotate( IB, ey, i );&lt;br /&gt;
xp.plot( PP(IB) ; line=1,color=obsplane );&lt;br /&gt;
% Projected circle at the impact point 1&lt;br /&gt;
variable IBcirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
IBcirc.z += deltap;&lt;br /&gt;
IBcirc = vector_rotate( IBcirc, ey, i );&lt;br /&gt;
IBcirc += struct_of_arrays_2_struct_array(IB)[-1] - struct_of_arrays_2_struct_array(IB)[0];&lt;br /&gt;
IBcirc = struct_of_arrays_2_struct_array(IBcirc);&lt;br /&gt;
%xp.shade_region( PP(IBcirc) ; fillcolor=photon1,width=0);&lt;br /&gt;
xp.plot( PP(struct_of_arrays_2_struct_array(IB)[-1]) ; sym=&amp;quot;circle&amp;quot;, color=photon1,fill, size=0.3*R);&lt;br /&gt;
&lt;br /&gt;
% Arrow between k and photon1 tratecory indicating b&lt;br /&gt;
IB2.z += 0.7*deltap;&lt;br /&gt;
IB2 = vector_rotate( IB2, ey, i );&lt;br /&gt;
xp.plot( PP(IB2) ; line=0 , forward_arrow, backward_arrow, depth=150 );&lt;br /&gt;
xp.xylabel( PP(vector( mean(IB2.x), mean(IB2.y), mean(IB2.z) )), &amp;quot;$b$&amp;quot;R, -.4, -.4 );&lt;br /&gt;
&lt;br /&gt;
% Line in OP from center to impact point 2&lt;br /&gt;
variable _IB = -_b*vector( [0,1], PI/2+[0,PI/2-atan2(crho,srho)], PI/2*[1,1] ; sph );&lt;br /&gt;
_IB.z += deltap;&lt;br /&gt;
_IB = vector_rotate( _IB, ey, i );&lt;br /&gt;
xp.plot( PP(_IB) ; line=1,color=obsplane );&lt;br /&gt;
% Projected circle at the impact point 1&lt;br /&gt;
variable _IBcirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
_IBcirc.z += deltap;&lt;br /&gt;
_IBcirc = vector_rotate( _IBcirc, ey, i );&lt;br /&gt;
_IBcirc += struct_of_arrays_2_struct_array(_IB)[-1] - struct_of_arrays_2_struct_array(_IB)[0];&lt;br /&gt;
_IBcirc = struct_of_arrays_2_struct_array(_IBcirc);&lt;br /&gt;
%xp.shade_region( PP(_IBcirc) ; fillcolor=photon2,width=0);&lt;br /&gt;
xp.plot( PP(struct_of_arrays_2_struct_array(_IB)[-1]) ; sym=&amp;quot;circle&amp;quot;, color=photon2,fill, size=0.3*R);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% RHO&lt;br /&gt;
variable rhoc = 0.3*R*vector( [1:1:#N], PI/2+[0:PI/2-atan2(crho,srho):#N], PI/2*[1:1:#N] ; sph );&lt;br /&gt;
rhoc.z += deltap;&lt;br /&gt;
rhoc = vector_rotate( rhoc, ey, i );&lt;br /&gt;
xp.plot( PP(rhoc) ; line=0,color=obsplane );&lt;br /&gt;
xp.xylabel( PP(vector( mean(rhoc.x), mean(rhoc.y), mean(rhoc.z) )), &amp;quot;$\rho$&amp;quot;R, -.4, -.8;color=obsplane );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP([R,deltap]*k) ; line=2, width=1 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% inclination&lt;br /&gt;
variable ic = GC( ez, k );&lt;br /&gt;
xp.plot( PP(0.18*ic) );&lt;br /&gt;
xp.xylabel( PP(0.12*vector( mean(ic.x), mean(ic.y), mean(ic.z) )), &amp;quot;$i$&amp;quot;R );&lt;br /&gt;
&lt;br /&gt;
% PSI&lt;br /&gt;
variable pc = GC( n, k );&lt;br /&gt;
xp.plot( PP(0.42*pc) ; color=photon1, depth=50);&lt;br /&gt;
xp.xylabel( PP(0.35*vector( mean(pc.x), mean(pc.y), mean(pc.z) )), &amp;quot;$\varPsi$&amp;quot;R, -.5, 0; color=photon1 );&lt;br /&gt;
&lt;br /&gt;
variable _pc = GC( n, k ; R);&lt;br /&gt;
xp.plot( PP(0.33*_pc) ; color=photon2, depth=150 );&lt;br /&gt;
xp.xylabel( PP(1.*vector( mean(_pc.x), mean(_pc.y), mean(_pc.z) )), &amp;quot;$\varPsi^*$&amp;quot;R, -1.8, 0 ; color=photon2);&lt;br /&gt;
&lt;br /&gt;
% Periastron&lt;br /&gt;
variable _per = _rp*vector_rotate( unit_vector(n), crossprod(k,n), _psi-_pp ); &lt;br /&gt;
variable _pper = GC( _per, k);&lt;br /&gt;
xp.plot( PP([0,1]*_per) ; color=photon2 );&lt;br /&gt;
xp.xylabel( PP(0.6*_per), &amp;quot;$r_\mathrm{p}$&amp;quot;R, .7, .0 ; color=photon2);&lt;br /&gt;
xp.plot( PP(0.29*_pper) ; color=photon2, depth=150 );&lt;br /&gt;
xp.xylabel( PP(0.25*vector( mean(_pper.x), mean(_pper.y), mean(_pper.z) )), &amp;quot;$\varPsi_\mathrm{p}$&amp;quot;R, .25, .0 ; color=photon2);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% Emission point: R, n &amp;amp; help lines&lt;br /&gt;
xp.plot( PP([0,1]*R*n) ; line=1 );&lt;br /&gt;
xp.xylabel( PP(0.5*R*n), &amp;quot;$R$&amp;quot;R, .5, .5 );&lt;br /&gt;
xp.plot( PP([1,1.2*s]*R*n) );&lt;br /&gt;
xp.xylabel( PP(1.2*ls*R*n), &amp;quot;$\vec{n}$&amp;quot;R, -1,0 );&lt;br /&gt;
xp.plot( PP([1,1.2*s]*R*n); forward_arrow=ARROW );&lt;br /&gt;
&lt;br /&gt;
xp.plot( PP(ncirc) ; line=2 );&lt;br /&gt;
xp.plot( PP(nline) ; line=2 );&lt;br /&gt;
xp.plot( PP(kncirc); line=1 );&lt;br /&gt;
xp.plot( PP(nkcirc); line=1 );&lt;br /&gt;
&lt;br /&gt;
variable Scirc = vector( 0.05*[R:R:#N],[0:2*PI:#N],PI/2.*[1:1:#N]; sph );&lt;br /&gt;
Scirc.z += R;&lt;br /&gt;
Scirc = vector_rotate( Scirc, unit_vector(crossprod(ez,n)), theta );&lt;br /&gt;
Scirc = struct_of_arrays_2_struct_array(Scirc);&lt;br /&gt;
%xp.shade_region( PP(Scirc) ; fillcolor=&amp;quot;black&amp;quot;,width=0);&lt;br /&gt;
xp.plot( PP(R*n)  ; sym=&amp;quot;circle&amp;quot;, fill, size=0.3*R, depth=40 );&lt;br /&gt;
&lt;br /&gt;
% phi&lt;br /&gt;
variable phic = vector( 0.13*[R:R:#N], [0:phi:#N], [PI/2.:PI/2:#N]; sph );&lt;br /&gt;
xp.plot( PP(phic) );&lt;br /&gt;
xp.xylabel( PP(vector( mean(phic.x), mean(phic.y), mean(phic.z) )), &amp;quot;$\phi$&amp;quot;R, 1.2, -.1 );&lt;br /&gt;
&lt;br /&gt;
% theta&lt;br /&gt;
variable tc = vector( 0.6*[R:R:#N], [phi:phi:#N], [0:theta:#N]; sph );&lt;br /&gt;
xp.plot( PP(tc) );&lt;br /&gt;
xp.xylabel( PP(0.8*vector( mean(tc.x), mean(tc.y), mean(tc.z) )), &amp;quot;$\theta$&amp;quot;R, -.1,-.5 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
% photon&lt;br /&gt;
xp.plot( PP(R*[n,n+(s-1)*k0]) ; line=0 , depth=40);&lt;br /&gt;
xp.xylabel( PP(R*(n+(ls-1)*k0)), &amp;quot;$\vec{k}_0$&amp;quot;R, 1.6, .6; depth=40 );&lt;br /&gt;
xp.plot( PP(R*[n,n+(s-1)*k0]); forward_arrow=ARROW, depth=40);&lt;br /&gt;
&lt;br /&gt;
% alpha&lt;br /&gt;
variable ac = GC( k0, n );&lt;br /&gt;
xp.plot( PP(0.2*ac+R*n) );&lt;br /&gt;
xp.xylabel( PP(R*n+0.13*vector( mean(ac.x), mean(ac.y), mean(ac.z) )), &amp;quot;$\alpha$&amp;quot;R );&lt;br /&gt;
&lt;br /&gt;
% trace&lt;br /&gt;
variable t1 = PT();&lt;br /&gt;
variable t1ind = where( vector_norm(t1) &amp;lt;= abs(vector(IB.x[-1],IB.y[-1],IB.z[-1])) );&lt;br /&gt;
xp.plot( PP(struct_filter( t1, t1ind ; copy ) ) ; color=photon1, depth=50, width=3 );&lt;br /&gt;
xp.plot( PP(struct_filter( t1, complement([0:length(t1ind)-1],t1ind) ; copy )); color=photon1, depth=30, line=1 );&lt;br /&gt;
variable t2 = _PT();&lt;br /&gt;
variable t2ind = where( vector_norm(t2) &amp;lt;= abs(vector(_IB.x[-1],_IB.y[-1],_IB.z[-1])) );&lt;br /&gt;
xp.plot( PP(struct_filter( t2, t2ind ; copy ) ) ; color=photon2, line=1,depth=250, width=3 );&lt;br /&gt;
xp.plot( PP(struct_filter( t2, complement([0:length(t2ind)-1],t2ind) ; copy ) ); color=photon2, depth=30, line=1 );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%%% FILL OBSERVER PLANE&lt;br /&gt;
variable fill1 = vector([kncirc.x,IB.x[[0,1]],struct_filter( t1, t1ind ; copy ).x],&lt;br /&gt;
			[kncirc.y,IB.y[[0,1]],struct_filter( t1, t1ind ; copy ).y],&lt;br /&gt;
			[kncirc.z,IB.z[[0,1]],struct_filter( t1, t1ind ; copy ).z]&lt;br /&gt;
		       );&lt;br /&gt;
variable _fill1 = vector([0,IB.x[[0,1]],struct_filter( t1, t1ind ; copy ).x],&lt;br /&gt;
			 [0,IB.y[[0,1]],struct_filter( t1, t1ind ; copy ).y],&lt;br /&gt;
			 [0,IB.z[[0,1]],struct_filter( t1, t1ind ; copy ).z]&lt;br /&gt;
			);&lt;br /&gt;
variable fill2 = vector([nkcirc.x,_IB.x[[0,1]],struct_filter( t2, t2ind ; copy ).x],&lt;br /&gt;
			[nkcirc.y,_IB.y[[0,1]],struct_filter( t2, t2ind ; copy ).y],&lt;br /&gt;
			[nkcirc.z,_IB.z[[0,1]],struct_filter( t2, t2ind ; copy ).z]&lt;br /&gt;
		       );&lt;br /&gt;
variable _fill2 = vector([0,_IB.x[[0,1]],struct_filter( t2, t2ind ; copy ).x],&lt;br /&gt;
			 [0,_IB.y[[0,1]],struct_filter( t2, t2ind ; copy ).y],&lt;br /&gt;
			 [0,_IB.z[[0,1]],struct_filter( t2, t2ind ; copy ).z]&lt;br /&gt;
			);&lt;br /&gt;
xp.shade_region( PP(_fill1); fillcolor=photon1, fill=36,depth=250, width=0 );&lt;br /&gt;
xp.shade_region( PP(_fill2); fillcolor=photon2, fill=36,depth=250, width=0 );&lt;br /&gt;
		  &lt;br /&gt;
&lt;br /&gt;
xp.render(&amp;quot;geo.pdf&amp;quot;);&lt;br /&gt;
xp.render(&amp;quot;geo.png&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1531</id>
		<title>3D orbit plots (xfig example)</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=3D_orbit_plots_(xfig_example)&amp;diff=1531"/>
		<updated>2018-05-17T13:31:16Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
[[File:orbit3d.png|380px]]&lt;br /&gt;
&lt;br /&gt;
The projection and handling of plotting in 3D is very similar to the examples [[Object3dsimple|Plotting in 3D (simple)]] and [[Object3d (xfig example)|Plotting in 3D]].&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%-*- mode: fold; mode: slang -*-&lt;br /&gt;
require(&amp;quot;isisscripts&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
% we will produce two plots: one showing the orbital plane in the&lt;br /&gt;
% context of the tangent plane of the sky and, thus, defining the&lt;br /&gt;
% orbital elements. the second one defines the Be disk geometry&lt;br /&gt;
% with respect to the orbital plane only, i.e, *without* the&lt;br /&gt;
% tangent plane of the sky and the orbital elements.&lt;br /&gt;
&lt;br /&gt;
% in the coordinate system used here, the tangent plane of the sky&lt;br /&gt;
% is defined as the xy-plane and the z-axis points away from Earth.&lt;br /&gt;
% that is with a camera inclination and roll angle of zero, we are&lt;br /&gt;
% looking directly onto the tangent plane of the sky. note that the&lt;br /&gt;
% x and y axis points north and east, respectively, i.e., the xy&lt;br /&gt;
% axis are flipped to ensure a right handed coordinate system.&lt;br /&gt;
&lt;br /&gt;
xfig_add_latex_package(&amp;quot;bm&amp;quot;); % for bold and italic fonts in mathmode&lt;br /&gt;
xfig_set_latex_preamble(&amp;quot;\let\mathbfit\bm&amp;quot;R); % alias for MNRAS&lt;br /&gt;
xfig_set_font_style(NULL); % no bold face anywhere&lt;br /&gt;
&lt;br /&gt;
%%% implement camera object %{{{&lt;br /&gt;
&lt;br /&gt;
% set up the camera view port&lt;br /&gt;
private define _xfig_camera_setup(s, incl, zrot, roll) {&lt;br /&gt;
  s.camera_data.incl = incl;&lt;br /&gt;
  s.camera_data.zrot = zrot;&lt;br /&gt;
  s.camera_data.roll = roll;&lt;br /&gt;
  % update camera vectors&lt;br /&gt;
  s.camera_data.cx = vector_rotate(&lt;br /&gt;
    vector(1,0,0), vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  s.camera_data.cy = vector_rotate(&lt;br /&gt;
    vector_rotate(vector(0,1,0), vector(1,0,0), s.camera_data.incl*PI/180),&lt;br /&gt;
    vector(0,1,0), -s.camera_data.zrot*PI/180&lt;br /&gt;
  );&lt;br /&gt;
  % optical axis of the camera&lt;br /&gt;
  variable camaxis = crossprod(s.camera_data.cx, s.camera_data.cy);&lt;br /&gt;
  % rotate around this vector&lt;br /&gt;
  s.camera_data.cx = vector_rotate(s.camera_data.cx, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
  s.camera_data.cy = vector_rotate(s.camera_data.cy, camaxis, s.camera_data.roll*PI/180);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add polygons to the plot&lt;br /&gt;
private define _xfig_camera_plot_polygon(s, v) {&lt;br /&gt;
  % add starting point [0,0,0]&lt;br /&gt;
  if (length(v.x) == 1 &amp;amp;&amp;amp; not qualifier_exists(&amp;quot;skiporigin&amp;quot;)) {&lt;br /&gt;
    v = struct_copy(v);&lt;br /&gt;
    v.x = [0, v.x];&lt;br /&gt;
    v.y = [0, v.y];&lt;br /&gt;
    v.z = [0, v.z];&lt;br /&gt;
  }&lt;br /&gt;
  % add to list&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add shaded region to the plot&lt;br /&gt;
private define _xfig_camera_shade_region(s, v) {&lt;br /&gt;
  % add to the same list as for polygons, but set a qualifier&lt;br /&gt;
  list_append(s.camera_data.polygons, v);&lt;br /&gt;
  list_append(s.camera_data.polygons_qualifiers, struct_combine(&lt;br /&gt;
    __qualifiers, struct { _camera_shade_region }&lt;br /&gt;
  ));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% add label to the plot&lt;br /&gt;
private define _xfig_camera_xyzlabel() {&lt;br /&gt;
  variable s, v, l, dx = 0, dy = 0;&lt;br /&gt;
  switch (_NARGS)&lt;br /&gt;
    { case 3: (s, v, l) = (); }&lt;br /&gt;
    { case 5: (s, v, l, dx, dy) = (); }&lt;br /&gt;
  list_append(s.camera_data.labels, v);&lt;br /&gt;
  list_append(s.camera_data.labels, l);&lt;br /&gt;
  list_append(s.camera_data.labels, [dx, dy]);&lt;br /&gt;
  list_append(s.camera_data.labels_qualifiers, __qualifiers);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% render polygons&lt;br /&gt;
private define _xfig_camera_render_polygons(s, pl) {&lt;br /&gt;
  % loop over polygons&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, length(s.camera_data.polygons)-1, 1) {&lt;br /&gt;
    % shade region&lt;br /&gt;
    if (s.camera_data.polygons_qualifiers[i] != NULL &amp;amp;&amp;amp;&lt;br /&gt;
	struct_field_exists(s.camera_data.polygons_qualifiers[i], &amp;quot;_camera_shade_region&amp;quot;)) {&lt;br /&gt;
      pl.shade_region(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
    % plot line&lt;br /&gt;
    else {&lt;br /&gt;
      pl.plot(&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cx),&lt;br /&gt;
        dotprod(s.camera_data.polygons[i], s.camera_data.cy);;&lt;br /&gt;
        s.camera_data.polygons_qualifiers[i]&lt;br /&gt;
      );&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  % loop over labels&lt;br /&gt;
  _for i (0, length(s.camera_data.labels)/3-1, 1) {&lt;br /&gt;
    pl.xylabel(&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cx),&lt;br /&gt;
      dotprod(s.camera_data.labels[3*i], s.camera_data.cy),&lt;br /&gt;
      s.camera_data.labels[3*i+1], __push_array(s.camera_data.labels[3*i+2]);;&lt;br /&gt;
      s.camera_data.labels_qualifiers[i]&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% new render function&lt;br /&gt;
private define _xfig_camera_render(s, file) {&lt;br /&gt;
  % first render all polygons&lt;br /&gt;
  s.camera_render_polygons(s, s);&lt;br /&gt;
  % default xfig render&lt;br /&gt;
  (@(s.camera_data.camera_xfig_render))(file);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% return an xfig_plot_new with a camera object included&lt;br /&gt;
define xfig_new_camera_plot() {&lt;br /&gt;
  variable args = __pop_args(_NARGS);&lt;br /&gt;
  variable s = struct_combine(&lt;br /&gt;
    struct {&lt;br /&gt;
      camera_setup = &amp;amp;_xfig_camera_setup,&lt;br /&gt;
      camera_plot_polygon = &amp;amp;_xfig_camera_plot_polygon,&lt;br /&gt;
      camera_xyzlabel = &amp;amp;_xfig_camera_xyzlabel,&lt;br /&gt;
      camera_shade_region = &amp;amp;_xfig_camera_shade_region,&lt;br /&gt;
      camera_render_polygons = &amp;amp;_xfig_camera_render_polygons,&lt;br /&gt;
      camera_data = struct { % camera data&lt;br /&gt;
	polygons = list_new, % list of polygons (Vector_Type[]) to plot&lt;br /&gt;
	polygons_qualifiers = list_new, % plot qualifiers for each polygon&lt;br /&gt;
	labels = list_new, % list of labels (Vector_Type[], String_Type)&lt;br /&gt;
	labels_qualifiers = list_new, % qualifiers for each label&lt;br /&gt;
	incl, zrot, roll, % camera inclination (around x), rotation (around z), and roll (around the optical axis)&lt;br /&gt;
	cx, cy, % unit vectors&lt;br /&gt;
        camera_xfig_render % remember xfig renderer function&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    xfig_plot_new(__push_args(args))&lt;br /&gt;
  );&lt;br /&gt;
  % default camera setup&lt;br /&gt;
  s.camera_setup(0, 0, 0);&lt;br /&gt;
  % remember xfig renderer function and then overwrite&lt;br /&gt;
  s.camera_data.camera_xfig_render = s.render;&lt;br /&gt;
  s.render = &amp;amp;_xfig_camera_render;&lt;br /&gt;
  &lt;br /&gt;
  return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% useful functions %{{{&lt;br /&gt;
&lt;br /&gt;
% function to split a closed line given as an array of vectors using indices.&lt;br /&gt;
% ensure that the returned arrays of vectors define a line without breaks&lt;br /&gt;
define vecsplitsort(r, n) {&lt;br /&gt;
  variable len = vector_norm(vector(diff(r.x[n]), diff(r.y[n]), diff(r.z[n])));&lt;br /&gt;
  variable i = @n;&lt;br /&gt;
  if (max(len) &amp;gt; 2*median(len)) {&lt;br /&gt;
    i = shift(n, where_max(len)+1);&lt;br /&gt;
  }&lt;br /&gt;
  return vector(r.x[i], r.y[i], r.z[i]);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% function to shift, incline, and rotate a vector into the orbital plane&lt;br /&gt;
variable a, incl, omega, nOrb, ecc;&lt;br /&gt;
define vec2orbit(x) {&lt;br /&gt;
  % translate according to the focal point (center of mass)&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;notrans&amp;quot;)) {&lt;br /&gt;
    x += vector(-sqrt(a^2 - (a*(1-ecc))^2), 0, 0);&lt;br /&gt;
  }&lt;br /&gt;
  % incline&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noincl&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(x, vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
  }&lt;br /&gt;
  % rotate&lt;br /&gt;
  ifnot (qualifier_exists(&amp;quot;noomega&amp;quot;)) {&lt;br /&gt;
    x = vector_rotate(&lt;br /&gt;
      x, nOrb, omega * PI/180&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
  return x;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
% calculates an arch between the vectors v1 and v2 with radius r&lt;br /&gt;
define arch(v1, v2, r) {&lt;br /&gt;
  v1 *= (1./vector_norm(v1));&lt;br /&gt;
  v2 *= (1./vector_norm(v2));&lt;br /&gt;
  % angle between the vectors and rotation axis, i.e, the normal&lt;br /&gt;
  variable angle = acos(dotprod(v1, v2));&lt;br /&gt;
  variable axis = crossprod(v1, v2);&lt;br /&gt;
  axis *= (1./vector_norm(axis));&lt;br /&gt;
  if (qualifier_exists(&amp;quot;reverse&amp;quot;)) {&lt;br /&gt;
    axis *= -1;&lt;br /&gt;
    angle = 2*PI - angle;&lt;br /&gt;
  }&lt;br /&gt;
  % calculate arch by rotating v1 around the axis&lt;br /&gt;
  variable nphi = int(1000*angle/2/PI);&lt;br /&gt;
  variable step = angle / nphi;&lt;br /&gt;
  variable arch = Vector_Type[nphi];&lt;br /&gt;
  variable i;&lt;br /&gt;
  _for i (0, nphi-1, 1) {&lt;br /&gt;
    arch[i] = r*vector_rotate(v1, axis, step*i);&lt;br /&gt;
  }&lt;br /&gt;
  return merge_struct_arrays(arch);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% define geometry %{{{&lt;br /&gt;
&lt;br /&gt;
% orbit parameters&lt;br /&gt;
variable ecc = .05, a = 300; % = 1 - b/a&lt;br /&gt;
variable omega = -50, incl = 30.;&lt;br /&gt;
% Be disk parameters&lt;br /&gt;
variable inclDisk = -50;&lt;br /&gt;
variable omegaDisk = 180+28;&lt;br /&gt;
variable radDisk = 150;&lt;br /&gt;
% neutron star's orbital plase&lt;br /&gt;
variable phiNS = .9;&lt;br /&gt;
&lt;br /&gt;
% define normal vectors of the reference frame (plotted later)&lt;br /&gt;
% (note that x and y are flipped, see abow)&lt;br /&gt;
variable ex = vector(0,1,0);&lt;br /&gt;
variable ey = vector(1,0,0);&lt;br /&gt;
variable ez = vector(0,0,1);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable n, m;&lt;br /&gt;
%%% calculation of orbit, disk, and neutron star position and disk %{{{&lt;br /&gt;
&lt;br /&gt;
% calculate orbit&lt;br /&gt;
variable nOrb = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), incl * PI/180);&lt;br /&gt;
variable phi = [0:2*PI:#1000];&lt;br /&gt;
variable rOrb = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rOrb.x, rOrb.y) = ellipse(a, a*(1-ecc), 0, phi);&lt;br /&gt;
rOrb = vec2orbit(rOrb);&lt;br /&gt;
&lt;br /&gt;
% calculate Be disk&lt;br /&gt;
variable rDisk = vector(&lt;br /&gt;
  Double_Type[length(phi)], Double_Type[length(phi)], Double_Type[length(phi)]&lt;br /&gt;
);&lt;br /&gt;
(rDisk.x, rDisk.y) = ellipse(radDisk, radDisk, 0, phi);&lt;br /&gt;
rDisk = vector_rotate(rDisk, vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
rDisk = vector_rotate(rDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
% disk normal&lt;br /&gt;
variable nDisk = vector_rotate(vector(0, 0, 1), vector(1, 0, 0), (incl+inclDisk) * PI/180);&lt;br /&gt;
nDisk = vector_rotate(nDisk, nOrb, omegaDisk * PI/180);&lt;br /&gt;
&lt;br /&gt;
% neutron star position&lt;br /&gt;
variable n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
variable rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
variable H = 12; % plot heights (width set individually)&lt;br /&gt;
%%% first xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl1 = xfig_new_camera_plot(8.,H);&lt;br /&gt;
pl1.camera_setup(40, 40, 0);&lt;br /&gt;
variable xmin = -315, ymin = -350, wlen = 850;&lt;br /&gt;
variable WH = 1.*pl1.plot_data.plot_height/pl1.plot_data.plot_width;&lt;br /&gt;
pl1.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl1.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl1.xylabel(.01, .99, &amp;quot;a)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
% define colors&lt;br /&gt;
variable orbColor = &amp;quot;#ffca57&amp;quot;;&lt;br /&gt;
variable tgColor = &amp;quot;#ffff71&amp;quot;;&lt;br /&gt;
% xyz-axes&lt;br /&gt;
variable xyzlen = 250.; % arrow length&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ex; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ey; forward_arrow, color = &amp;quot;red&amp;quot;, depth = 20);&lt;br /&gt;
pl1.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ex, &amp;quot;x&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ey, &amp;quot;y&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
pl1.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, n); depth = 85);&lt;br /&gt;
pl1.camera_plot_polygon(vecsplitsort(rOrb, m); line = 2, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, n); color = orbColor, depth = 85);&lt;br /&gt;
pl1.camera_shade_region(vecsplitsort(rOrb, m); color = orbColor, depth = 95);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.38); copy);&lt;br /&gt;
pl1.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, .3, .2; size = &amp;quot;small&amp;quot;, rotate = -25);&lt;br /&gt;
% plot tangent plane of the sky&lt;br /&gt;
variable tg = vector(&lt;br /&gt;
  -390*[1,0,0,1,1] + 320*[0,1,1,0,0],&lt;br /&gt;
  -250*[1,1,0,0,1] + 370*[0,0,1,1,0],&lt;br /&gt;
  [0,0,0,0,0]&lt;br /&gt;
);&lt;br /&gt;
pl1.camera_plot_polygon(tg; depth = 90);&lt;br /&gt;
pl1.camera_shade_region(tg; color = tgColor, depth = 90);&lt;br /&gt;
n = -28;&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;tangent plane&amp;quot;R, .55, -.7; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
pl1.camera_xyzlabel(struct_filter(tg, 1;  copy), &amp;quot;of the sky&amp;quot;R, .6, -.2; size = &amp;quot;small&amp;quot;, rotate = n);&lt;br /&gt;
% intersection of the planes&lt;br /&gt;
n = wherefirstmin(abs(rOrb.y + rOrb.z));&lt;br /&gt;
pl1.camera_plot_polygon(vector(rOrb.x[n], 0, 0); line = 1);&lt;br /&gt;
% inclination angle&lt;br /&gt;
  % find intersection of the orbit with the x-axis&lt;br /&gt;
n = where_min(abs(abs(rOrb.y) + rOrb.z)) + [-1,0,1];&lt;br /&gt;
m = interpol_points(0, rOrb.y[n], rOrb.x[n]);&lt;br /&gt;
pl1.camera_plot_polygon(vector([m,m], [0,-80], [0,0]); depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(vector(m, -60, 0), &amp;quot;$i$&amp;quot;, .75, -.1);&lt;br /&gt;
  % find the point on the orbit, which at a certain distance from this intersection point&lt;br /&gt;
n = where(rOrb.y &amp;lt; 0 and rOrb.x &amp;gt; 0);&lt;br /&gt;
n = n[where_min(abs(vector_norm(struct_filter(rOrb, n; copy) - vector(m, 0, 0)) - 80))];&lt;br /&gt;
  % connect the intersection point and the orbit with an arch of the same length as the distance&lt;br /&gt;
pl1.camera_plot_polygon(vector(m, 0, 0) + arch(&lt;br /&gt;
    vector(0, -1, 0), vector(rOrb.x[n] - m, rOrb.y[n], rOrb.z[n]), 80&lt;br /&gt;
));&lt;br /&gt;
% periastron and apastron position&lt;br /&gt;
variable pstrn = vec2orbit(vector(a, 0, 0));&lt;br /&gt;
variable astrn = vec2orbit(vector(-a, 0, 0));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, astrn]); line = 1, depth = 50);&lt;br /&gt;
pl1.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, -.5, .5);&lt;br /&gt;
pl1.camera_xyzlabel(astrn, &amp;quot;A&amp;quot;, .3, -.8);&lt;br /&gt;
% prism supporting the 3D position of the periastron &lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([pstrn, pstrn-vector(0,pstrn.y,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(pstrn.x,0,pstrn.z), vector(pstrn.x,0,0)]));&lt;br /&gt;
pl1.camera_plot_polygon(vector(pstrn.x, 0, pstrn.z));&lt;br /&gt;
% same for the apastron&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([astrn, astrn-vector(0,astrn.y,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([vector(astrn.x,0,astrn.z), vector(astrn.x,0,0)]); line = 2);&lt;br /&gt;
pl1.camera_plot_polygon(vector(astrn.x, 0, astrn.z); line = 2);&lt;br /&gt;
% omega angle&lt;br /&gt;
n = arch(vector(1, 0, 0), pstrn, 85);&lt;br /&gt;
m = length(n.x)/2; % vector to half of the arch (-&amp;gt; label)&lt;br /&gt;
pl1.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.8*vector(n.x[m], n.y[m], n.z[m]), &amp;quot;$\omega$&amp;quot;R, 0, -.4);&lt;br /&gt;
% neutrons star position&lt;br /&gt;
pl1.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl1.camera_xyzlabel(.5*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, -.6, .5);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl1.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
pl1.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
variable rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl1.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl1.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, .6, -.2; rotate = -55);&lt;br /&gt;
pl1.camera_xyzlabel(.5*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, .5, -.8);&lt;br /&gt;
% line of sight&lt;br /&gt;
pl1.camera_plot_polygon(rNS - vector([0,0], [0,0], [0,230]); color = &amp;quot;blue&amp;quot;, forward_arrow);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;line of sight&amp;quot;R, .85, .6; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
pl1.camera_xyzlabel(rNS, &amp;quot;to Earth&amp;quot;R, .85, 1.2; color = &amp;quot;blue&amp;quot;, size = &amp;quot;\small&amp;quot;, rotate = 37);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
%%% second xfig plot %{{{&lt;br /&gt;
&lt;br /&gt;
variable pl2 = xfig_new_camera_plot(10,H);&lt;br /&gt;
variable incCam = 20; % camera inclination with respect to the orbital plane&lt;br /&gt;
pl2.camera_setup(incl-90+incCam, 0, 0); % incl-90 -&amp;gt; edge on&lt;br /&gt;
% rotate the camera around the orbital normal&lt;br /&gt;
variable rotCam = 160;&lt;br /&gt;
pl2.camera_data.cx = vector_rotate(pl2.camera_data.cx, nOrb, rotCam*PI/180);&lt;br /&gt;
pl2.camera_data.cy = vector_rotate(pl2.camera_data.cy, nOrb, rotCam*PI/180);&lt;br /&gt;
variable xmin = -260, ymin = -270, wlen = 500;&lt;br /&gt;
variable WH = 1.*pl2.plot_data.plot_height/pl2.plot_data.plot_width;&lt;br /&gt;
pl2.world(xmin, xmin+wlen/WH, ymin, ymin+wlen);&lt;br /&gt;
pl2.axes(; major = 0, minor = 0, color = &amp;quot;white&amp;quot;);&lt;br /&gt;
pl2.xylabel(.05, .87, &amp;quot;b)&amp;quot;, -.5, .5; size = &amp;quot;small&amp;quot;, world0);&lt;br /&gt;
xyzlen = 200;&lt;br /&gt;
pl2.camera_plot_polygon(xyzlen*ez; forward_arrow, color = &amp;quot;red&amp;quot;, line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(1.05*xyzlen*ez, &amp;quot;z&amp;quot;; color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% define colors&lt;br /&gt;
variable diskColor = &amp;quot;skyblue&amp;quot;;&lt;br /&gt;
% z-axis projected onto the orbital plane&lt;br /&gt;
variable zdisk = xyzlen*(ez - (ez*nOrb)*nOrb);&lt;br /&gt;
%zdisk *= (1./vector_norm(zdisk));&lt;br /&gt;
pl2.camera_plot_polygon(zdisk; color = &amp;quot;red&amp;quot;, line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([xyzlen*ez, zdisk]); line = 2, color = &amp;quot;red&amp;quot;);&lt;br /&gt;
% plot orbit&lt;br /&gt;
pl2.camera_plot_polygon(rOrb; depth = 75);&lt;br /&gt;
pl2.camera_shade_region(rOrb; color = orbColor, depth = 100);&lt;br /&gt;
n = where(.837 &amp;lt; phi/2/PI &amp;lt; .95); % nasty hack for the dotted line behin the Be disk&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n; copy); depth = 65, line = 2);&lt;br /&gt;
n = struct_filter(rOrb, int(length(rOrb.x)*.21); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;orbital plane&amp;quot;R, 0, -.3; size = &amp;quot;small&amp;quot;, rotate = -19);&lt;br /&gt;
pl2.camera_xyzlabel(pstrn, &amp;quot;P&amp;quot;, .5, -.5);&lt;br /&gt;
% plot Be disk&lt;br /&gt;
n = where(dotprod(rDisk, nOrb) &amp;lt; 0, &amp;amp;m);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, n); depth = 70);&lt;br /&gt;
pl2.camera_plot_polygon(vecsplitsort(rDisk, m); line = 2, depth = 85);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, n); color = diskColor, depth = 70);&lt;br /&gt;
pl2.camera_shade_region(vecsplitsort(rDisk, m); color = diskColor, depth = 105);&lt;br /&gt;
n = struct_filter(rDisk, int(length(rDisk.x)*.15); copy);&lt;br /&gt;
pl2.camera_xyzlabel(n, &amp;quot;Be disk&amp;quot;R, 0, .5; size = &amp;quot;small&amp;quot;, rotate = -23);&lt;br /&gt;
% highest point of the disk above the orbit&lt;br /&gt;
variable hline = vector_rotate(vector(0, 1, 0), vector(1, 0, 0), (incl+inclDisk)*PI/180);&lt;br /&gt;
hline = radDisk*vector_rotate(hline, nOrb, omegaDisk*PI/180);&lt;br /&gt;
pl2.camera_plot_polygon(hline; line = 3);&lt;br /&gt;
pl2.camera_xyzlabel(hline*1.1, &amp;quot;H&amp;quot;);&lt;br /&gt;
pl2.camera_plot_polygon(hline - (hline*nOrb)*nOrb; line = 1);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([hline, hline - (hline*nOrb)*nOrb]); line = 2);&lt;br /&gt;
% omega disk&lt;br /&gt;
n = arch(zdisk, hline - (hline*nOrb)*nOrb, 40; reverse);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.5*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\theta$&amp;quot;R, 0, .1);&lt;br /&gt;
% disk inclination&lt;br /&gt;
n = arch(hline, hline - (hline*nOrb)*nOrb, 60);&lt;br /&gt;
pl2.camera_plot_polygon(n; line = 2);&lt;br /&gt;
pl2.camera_xyzlabel(.7*struct_filter(n, length(n.x)/2-1; copy), &amp;quot;$\delta$&amp;quot;R, .2, -.2);&lt;br /&gt;
% neutrons star position (new one compared to plot 1)&lt;br /&gt;
phiNS = .09;&lt;br /&gt;
n = wherefirstmin(abs(phi-phiNS*2*PI)); % orbital phase&lt;br /&gt;
rNS = vector(rOrb.x[n], rOrb.y[n], rOrb.z[n]);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; sym = &amp;quot;circle&amp;quot;, fill, size = .5, skiporigin);&lt;br /&gt;
pl2.camera_plot_polygon(rNS; forward_arrow, line = 1);&lt;br /&gt;
pl2.camera_xyzlabel(.6*rNS, &amp;quot;$\mathbfit{r}_\mathrm{ns}$&amp;quot;R, 1.1, .9);&lt;br /&gt;
n = wherefirstmin(vector_norm(rOrb - rNS));&lt;br /&gt;
pl2.camera_plot_polygon(struct_filter(rOrb, n + int(.05*length(rOrb.x)) + [0,1]; copy); forward_arrow);&lt;br /&gt;
% neutron star position projected into the Be disk reference frame&lt;br /&gt;
rNSdiskZ = nDisk * dotprod(rNS, nDisk);&lt;br /&gt;
pl2.camera_plot_polygon(rNS-rNSdiskZ; forward_arrow, line = 3);&lt;br /&gt;
pl2.camera_plot_polygon(merge_struct_arrays([rNS-rNSdiskZ, rNS]); forward_arrow);&lt;br /&gt;
pl2.camera_xyzlabel(rNS-.5*rNSdiskZ, &amp;quot;$h\mathbfit{n}_\mathrm{disk}$&amp;quot;R, 0, -.3; rotate = 39);&lt;br /&gt;
pl2.camera_xyzlabel(.9*(rNS-rNSdiskZ), &amp;quot;$r\mathbfit{e}_\mathrm{r}$&amp;quot;R, 0, -.7);&lt;br /&gt;
&lt;br /&gt;
%}}}&lt;br /&gt;
&lt;br /&gt;
% combine and render&lt;br /&gt;
% (note: the camera plot renderes the lines only when .render is called.&lt;br /&gt;
%        thus we need to call these first, which is not a convenient way...)&lt;br /&gt;
pl1.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
pl2.render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
xfig_new_hbox_compound(pl1,pl2).render(&amp;quot;../plots/reference_frames.pdf&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1530</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1530"/>
		<updated>2018-05-17T10:04:52Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=isis:slxfig:monsterlightcurve]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3d]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=isis:slxfig:model_decomp]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1529</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1529"/>
		<updated>2018-05-17T10:04:21Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=isis:slxfig:monsterlightcurve]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=Object3D]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=isis:slxfig:model_decomp]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1528</id>
		<title>Plot gallery</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Plot_gallery&amp;diff=1528"/>
		<updated>2018-05-17T10:04:01Z</updated>

		<summary type="html">&lt;p&gt;Obst: /* Plotting in 3D */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Remeis X-fig plot gallery =&lt;br /&gt;
&lt;br /&gt;
Please add your with &amp;lt;code&amp;gt;slxfig&amp;lt;/code&amp;gt; created plots! Preferably format: clickable image of your final product, leading to the s-lang code (with or without comments). When uploading pictures, please don't forget to give them a '''unique''' name, as they are all stored in one directory.&lt;br /&gt;
&lt;br /&gt;
=== Mike's Fancy Plots ===&lt;br /&gt;
[[File:fancy_plot.png|400px|link=Mike's fancy plots (xfig example)]] Plotting spectra in the way of Mike's fancy plots&lt;br /&gt;
&lt;br /&gt;
=== Plotting Model Components ===&lt;br /&gt;
[[File:plot_individual_components.png|400px|link=Plotting Model Components (xfig example)]] Plotting individual model components&lt;br /&gt;
&lt;br /&gt;
=== Color-coded maps with png and xfig ===&lt;br /&gt;
[[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|How to plot a color-coded map (landscape) using png and xfig]]&lt;br /&gt;
&lt;br /&gt;
=== Two-dimensional histograms ===&lt;br /&gt;
&lt;br /&gt;
[[File:banana-plot.png|400px|link=Two-dimensional_histograms_(xfig_example)]] banana-plot with coordinate system —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Compounds and multiplots ===&lt;br /&gt;
[[File:multiplot_and_plot.png|300px|link=compounds and multi-panel plots (xfig example)]] Compounds and multi-panel plots —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== parameter-space sketches ===&lt;br /&gt;
&lt;br /&gt;
[[File:Chisqr_parabola.png|300px|link=Chi-squared_parabola_(xfig_example)]] [[File:Chisqr_ellipse.png|200px|link=Chi-squared_contours_(xfig_example)]]&lt;br /&gt;
Simple plots to sketch the meaning of sigma-values in 1-dim or 2-dim chi-squared parameter spaces. (MB: Be aware that the n-sigma projection of 2D contours on one parameter differs from the n-sigma levels obtained for only this parameter (1D), as the delta-chi^2 (or delta statistic) depends on the number of parameters.)&lt;br /&gt;
Author  — ''[mailto:Tobias.Beuchert@sternwarte.uni-erlangen.de Tobias Beuchert] 2013-01-07 13:41''&lt;br /&gt;
&lt;br /&gt;
=== Orbit plot ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:gx301_skizze_nosuz2.png|300px|link=Orbit_plot_of_GX_301-2_(xfig_example)]] Orbit plot of GX 301-2, including the average ASM lightcurve folded on the orbit. [[:File:Gx301_skizze_nosuz2.pdf|Version in better resolution (pdf)]]. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:47''&lt;br /&gt;
&lt;br /&gt;
=== 4 colorful landscapes ===&lt;br /&gt;
&lt;br /&gt;
[[File:Color_landsc_gx301.png|300px|link=Color_Landscapes_(xfig_example)]] Color-coded maps of count-rate distribution in the pulse-profile for different epochs. Very similar to what is shown in [[Color-coded_maps_with_2d_histograms,_png,_and_xfig_(xfig_example)|an example: plotting color-coded maps with the png and xfig modules]]. Writing out the PNG with a separate routine is not neccessary anymore I think, code is a little oldish. Author  — ''[mailto:Felix.Fuerst@sternwarte.uni-erlangen.de Felix Fürst] 2012-05-23 17:55''&lt;br /&gt;
&lt;br /&gt;
=== Contour plot ===&lt;br /&gt;
&lt;br /&gt;
[[File:Crsfcontours_xtej1946.png|300px|link=Contour_Plot_(xfig_example)]] Contour plot of the Cyclo line energy of XTE J1946+274.  — ''[mailto:Sebastian.Mueller@sternwarte.uni-erlangen.de Sebastian Mueller] 2012-05-30 15:53''&lt;br /&gt;
&lt;br /&gt;
=== 2D image contours ===&lt;br /&gt;
[[File:map2003_0_a570_cont_e.png|300px|link=2D_Map_SAA_(xfig_example)]] Map (2D histogram) of the South Atlantic Anomaly (SAA) overplotted with iso-magnetic field lines of the Earth's magnetic field. — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Colorful Cyg X-1 lightcurves ===&lt;br /&gt;
[[File:lc_cygx1.png|500px|link=Lightcurve_Cygx1_(xfig_example)]] &lt;br /&gt;
&lt;br /&gt;
Combining ''RXTE''-ASM, ''Swift''-BAT and ''MAXI'' lightcurves of Cyg X-1 in one plot. The ''RXTE'' lightcurve is color-coded for the low/hard (blue) and the high/soft (red) state. The colors for ''Swift'' are the same as for ''RXTE'' at the same time, or, when the ''RXTE'' lightcurve stops, as during times with similar count rates. ''MAXI'' has its own scale from black (low/hard) to grey (high/soft). Additionally, times of Chandra observations won by our group are indicated (AO13 was scheduled but then canceled). — ''[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell] &amp;amp; [mailto:Ivica.Miskovicova@sternwarte.uni-erlangen.de Ivica Miškovičová]''&lt;br /&gt;
&lt;br /&gt;
=== Chandra coverage of Cyg X-1 ===&lt;br /&gt;
[[File:Chandra_coverage.png|300px|link=Chandra_Coverage_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Plot of the orbital coverage of Cyg X-1 with ''Chandra'' observations, including an example of how to calculate Roche lobes with isis. —''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
 &lt;br /&gt;
=== Wind structure in Cyg X-1 ===&lt;br /&gt;
[[File:sketch.png|400px|link=Wind_structure_of_Cyg_X-1_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
You may not know, but you can draw basically anything with slxfig! Here is a very nice example from [http://adsabs.harvard.edu/abs/2011PhDT.........9H| Manfred's PhD thesis] (see Fig. 2.62 in there for an interpretation), describing our idea of the wind structure in the Cyg X-1 system.&lt;br /&gt;
&lt;br /&gt;
The plot includes a couple of very nice tricks. Slxfig provides a function to draw photons. The example also shows how to add existing eps files to the figure, and how to add your own functions to the structure saving the xfig plot. — ''[mailto:Manfred.Hanke@sternwarte.uni-erlangen.de Manfred Hanke]''&lt;br /&gt;
&lt;br /&gt;
=== Linear-Logarithmic Axis ===&lt;br /&gt;
[[File:lin_log_axis.png|300px|link=isis:slxfig:lin_log_axis]] Another example of a user defined axis (partially linear and logarithmic). — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting images with world coordinates ===&lt;br /&gt;
[[File:Cygx1_iras.png|300px|link=Satellite_Picture_Zoom_(xfig_example)]] 408 MHz and IRAS images of regions centered at the position of Cygnus X-1. The WCS module is used to show sky coordinates (galactic coordinate grid on the left, RA-DEC axis labels on the right)— ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Skyplot of source positions ===&lt;br /&gt;
[[File:source_skyplot.png|400px|link=Skyplot_of_source_positions_(xfig_example)]] Random source positions shown in an Aitoff projection of the sky in RA and DEC. The Galactic Plane is highlighted. — ''[mailto:Moritz.Boeck@sternwarte.uni-erlangen.de Moritz Boeck]''&lt;br /&gt;
&lt;br /&gt;
=== Electromagnetic Spectrum ===&lt;br /&gt;
[[File:elmag.png|500px|link=Eletromagnetic_spectrum_(xfig_example)]] &lt;br /&gt;
Electromagnetic spectrum in energy, frequency and wavelength. Satellite energy ranges marked.&lt;br /&gt;
Original Script by [mailto:Cornellia.Mueller@sternwarte.uni-erlangen.de Cornelia Müller]&lt;br /&gt;
— ''[mailto:Felicia.Krauss@sternwarte.uni-erlangen.de Felicia Krauß]''&lt;br /&gt;
&lt;br /&gt;
=== Monster Lightcurve Plot ===&lt;br /&gt;
[[File:monster_lightcurve_vg.png|400px|link=isis:slxfig:monsterlightcurve]]&lt;br /&gt;
Lightcurves from all all-sky monitors &amp;amp; time of individual pointed RXTE observations of Cyg X-1. — ''[mailto:Victoria.Grinberg@sternwarte.uni-erlangen.de Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Periodic Table ===&lt;br /&gt;
[[File:periodictable_nh.png|400px|link=Periodic_Table_of_the_Elements_(xfig_example)]]&lt;br /&gt;
Draw your own periodic table in only ~120 lines of code. Data is taken from the X-ray Data Booklet 2009. —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Relativistic photon trajectory ===&lt;br /&gt;
[[File:ptrace3.png|400px|link=Lightbending_ptrace_(xfig_example)]]&lt;br /&gt;
Sketch of a relativistic photon trajectory. NOTE: &amp;quot;lbscripts&amp;quot; are required to execute the script. The path is set in the Script correctly, otherwise please contact me. — ''[mailto:Sebastian.Falkner@sternwarte.uni-erlangen.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Atomic processes ===&lt;br /&gt;
[[File:dr_nh.png|300px|link=Atomic_Processes_(xfig_example)]]&lt;br /&gt;
Make sketches of atomic processes such as di-electronic recombination (DR). Other possibilities include radiative recombination, auto-ionization, photo-ionization, ... —''&lt;br /&gt;
[mailto:Natalie.Hell@sternwarte.uni-erlangen.de Natalie Hell]''&lt;br /&gt;
&lt;br /&gt;
=== Simple inset ===&lt;br /&gt;
[[Inset plot (xfig example)| Easy example for an inset]]&lt;br /&gt;
&lt;br /&gt;
=== Insets and shaded regions ===&lt;br /&gt;
[[File:1008batlcgiant2012.png|300px|link=Insets_and_shaded_regions_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and shading specific regions as well as labeling them. Furthermore, adding an inset plot showing an epoch folding result here.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Insets as zoom-ins ===&lt;br /&gt;
[[File:gx304batlcobs.png|300px|link=GX304batlcobs_(xfig_example)]]&lt;br /&gt;
Plotting the BAT-lightcurve of a source and adding zooms into the lightcurve showing the available observations.  —''&lt;br /&gt;
[mailto:Matthias.Kuehnel@sternwarte.uni-erlangen.de Matthias Kühnel]''&lt;br /&gt;
&lt;br /&gt;
=== Hertzsprung-Russell diagram ===&lt;br /&gt;
[[File:Hr_diagram.png|300px|link=Hertzsprung-Russell_diagram_(xfig_example)]]&lt;br /&gt;
A schematic Hertzsprung-Russell diagram —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== Colored data points ===&lt;br /&gt;
[[File:Colored_data_points.png|300px|link=Speedometer_Colorplot_(xfig_example)]]&lt;br /&gt;
&amp;quot;Speedometer&amp;quot;-like colormap for data points —''&lt;br /&gt;
[mailto:Andreas.Irrgang@sternwarte.uni-erlangen.de Andreas Irrgang]''&lt;br /&gt;
&lt;br /&gt;
=== 3D Maser Disk ===&lt;br /&gt;
[[File:disk_map.png|300px|link=3D_Maser_Disk_(xfig_example)]]&lt;br /&gt;
3D Maser disk and projections on 2D. —''&lt;br /&gt;
[mailto:Eugenia.Litzinger@sternwarte.uni-erlangen.de Eugenia Litzinger]''&lt;br /&gt;
&lt;br /&gt;
=== Angstrom and keV axes done properly in the same plot (axis coordinate transformation) ===&lt;br /&gt;
[[File:zoom.png|300px|link=Angstrom_to_keV_axis_transformation_(xfig_example)]]&lt;br /&gt;
Simple but extremely useful axis transformation; works both ways in spite of the name —''&lt;br /&gt;
[mailto:grinberg@space.mit.edu|Victoria Grinberg]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D, simple ===&lt;br /&gt;
[[File:object3dsimple.png|300px|link=isis:slxfig:object3Dsimple]]&lt;br /&gt;
An simple example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting in 3D ===&lt;br /&gt;
[[File:object3d.png|300px|link=object3D]]&lt;br /&gt;
An example how to create a 3D plot using vector transformations.''&lt;br /&gt;
[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Calculating and plotting orbits in 3D ===&lt;br /&gt;
&lt;br /&gt;
[[File:orbit3d.png|300px|link=isis:slxfig:orbit3D]]&lt;br /&gt;
Calculation and plots of orbits in 3D''&lt;br /&gt;
[mailto:matthias.kuehnel@sternwarte.uni-erlangen.de Matthias Kuehnel]''&lt;br /&gt;
&lt;br /&gt;
It also defines additional TeX commands and packages for plotting purposes, such as using no bold face.&lt;br /&gt;
&lt;br /&gt;
=== VLBI coordinates in 3D ===&lt;br /&gt;
[[File:vlbi_coordinates.png|300px]]&lt;br /&gt;
Displaying VLBI coordinates in 3D''&lt;br /&gt;
[mailto:tobias.beuchert@sternwarte.uni-erlangen.de Tobias Beuchert]''&lt;br /&gt;
&lt;br /&gt;
=== Plotting a fit model ===&lt;br /&gt;
[[File:sedfitsmodel.png|400px|link=Plot_fit_model_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
How to plot a fit model in xfig to extend beyond the data.''&lt;br /&gt;
[mailto:Felicia.Krauss@fau.de Felicia Krauss]''&lt;br /&gt;
&lt;br /&gt;
=== Multipanel spectral model decomposition ===&lt;br /&gt;
[[File:multipanel_decomposition.png|400px|link=isis:slxfig:model_decomp]]&lt;br /&gt;
&lt;br /&gt;
Spectral model decompositions of a whole sample using multiplot. Compact and flexible code thanks to some clean file structuring and efficiently placed loops.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Chi²-distribution and CDF ===&lt;br /&gt;
[[File:Chisqr.png|300px|link=Chisquared_Distribution_Plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The Chi²-distribution and its according cumulative distribution function for a large number of degrees of freedom. Confidence levels are indicated in the CDF. Feel free to use it in your thesis.—''[mailto:marco.fink@fau.de Marco Fink]''&lt;br /&gt;
&lt;br /&gt;
=== Polar Plot ===&lt;br /&gt;
[[File:polarplot.png|300px|link=Polar_plot_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
In the isisscripts there is a function 'xfig_polarplot_new, with which provides an easy way to plot an individual adjustable polar plot. This plot is just one very simple example, for more information see 'isis&amp;gt; help xfig_polarplot_new'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot image ===&lt;br /&gt;
[[File:plotimage1.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
[[File:plotimage2.png|300px|link=Xfig_plot_image_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
Other than the %plot_png function of the xfig_plot structure this function&lt;br /&gt;
aims to plot images with a (given) ARBITRARY x/y-grid in a correct way&lt;br /&gt;
(NOTE that .plot_png does not care for x/y values!). This also allows to&lt;br /&gt;
plot images with logarithmic scales without any problems! In addition&lt;br /&gt;
it is easy to plot gabbed images by just giving the x and y grid as bin_lo&lt;br /&gt;
and bin_hi.&lt;br /&gt;
&lt;br /&gt;
These plots are just two very simple examples, for more information see&lt;br /&gt;
'isis&amp;gt; help xfig_plot_image'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
=== Xfig plot colormap ===&lt;br /&gt;
[[File:plotcmap1.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
[[File:plotcmap2.png|300px|link=Xfig_plot_colormap_(xfig_example)]]&lt;br /&gt;
&lt;br /&gt;
The function 'xfig_plot_colormap' creates a horizontal, vertical colormap/colorscale for a given image.&lt;br /&gt;
For more information see 'isis&amp;gt; help xfig_plot_colormap'.—''[mailto:sebastian.falkner@fau.de Sebastian Falkner]''&lt;br /&gt;
&lt;br /&gt;
[[Category:SLxfig]]&lt;br /&gt;
[[Category:Isis / Slang]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Template:Lowercase&amp;diff=1505</id>
		<title>Template:Lowercase</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Template:Lowercase&amp;diff=1505"/>
		<updated>2018-05-08T11:59:55Z</updated>

		<summary type="html">&lt;p&gt;Obst: Created page with &amp;quot;&amp;lt;span&amp;gt;{{DISPLAYTITLE:{{#if:{{NAMESPACE}}|{{NAMESPACE}}:|}}{{lcfirst:{{PAGENAME}}}}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;/noinclude&amp;gt;&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;span&amp;gt;{{DISPLAYTITLE:{{#if:{{NAMESPACE}}|{{NAMESPACE}}:|}}{{lcfirst:{{PAGENAME}}}}}}&amp;lt;/span&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:EROSITA&amp;diff=1503</id>
		<title>Category:EROSITA</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:EROSITA&amp;diff=1503"/>
		<updated>2018-05-08T11:54:13Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase}}&lt;br /&gt;
this is a category page for eROSITA stuff&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:EROSITA&amp;diff=1502</id>
		<title>Category:EROSITA</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:EROSITA&amp;diff=1502"/>
		<updated>2018-05-08T11:52:33Z</updated>

		<summary type="html">&lt;p&gt;Obst: Created page with &amp;quot;this is a category page for eROSITA stuff&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;this is a category page for eROSITA stuff&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Contents&amp;diff=1501</id>
		<title>Contents</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Contents&amp;diff=1501"/>
		<updated>2018-05-08T11:51:58Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{chart/start|align=center|summary=Contents of the Remeis wiki}}&lt;br /&gt;
{{chart| | | | |  |  | |   Wiki |  |   |   |      |  | Wiki=[[Main Page | '''Remeis Wiki''']]}}&lt;br /&gt;
{{chart| |   ,  |-|-|-|-|-|-|    +     |-|-|-|-|-|-|v|~|~|~|~|~|~|7        |  }}&lt;br /&gt;
{{chart| Info | | | | | Software | | | | | Physics | | | | | Internal | |&lt;br /&gt;
Info=[[:Category:General Information|'''General Information''']]|Software=[[:Category:Software|'''Software''']]|&lt;br /&gt;
Physics=[[:Category:Science|'''Science''']]|Internal=[[:Category:Internal|Internal]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |!| | | | | | | |:| }}&lt;br /&gt;
{{chart| )| curr | | | |)|cfits| | | |)|Accr | | | | admin | |&lt;br /&gt;
curr=[[:Category:Current_Members|For Current Members]]|cfits=[[:Category:CFITSIO_/_FPIPE|CFITSIO/FPIPE]]|&lt;br /&gt;
Accr=[[:Category:Accreting_X-ray_Pulsars|Accreting X-ray Pulsars]]|admin=[[:Category:Admin|Admin]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |!| |!| }}&lt;br /&gt;
{{chart| )| Obs | | | |)| data | | | |!| |`|src|&lt;br /&gt;
Obs=[[:Category:Observatory|On the Observatory]]|data=[[:Category:Data_Extraction|Data Extraction]]|src=[[:Category:XRP_Sources|Sources]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |! | }}&lt;br /&gt;
{{chart| `| visit | | | |)| git| | | |)|Atom| | | |&lt;br /&gt;
visit=[[:Category:Visitors|For Visitors]]|git=[[:Category:GIT|GIT]]|Atom=[[:Category:Atomic_Physics|Atomic Physics]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | |! | }}&lt;br /&gt;
{{chart| | | | | | | |)|isis| | | |`|ero| | | |isis=[[:Category:Isis_/_Slang|ISIS/Slang]]|ero=[[:Category:{{lcfirst:eROSITA}}|eROSITA]]}}&lt;br /&gt;
{{chart| | | | | | | |!| |!| | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |!| |`|xfig| | | | | | |xfig=[[:Category:SLxfig|SLxfig]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}{{chart| | | | | | | |)|KDE| | | | | | | | |KDE=[[:Category:KDE|KDE]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|LaTeX| | | | | | | | |LaTeX=[[:Category:LaTeX|LaTeX]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|RCL| | | | | | | | |RCL=[[:Category:RCL|Remeis C Library]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|slurm| | | | | | | |slurm=[[:Category:Slurm|Slurm]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|tools| | | | | | | |tools=[[:Category:Tools|Tools]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|troub| | | | | | | |troub=[[:Category:Trouble_Shooting|Trouble Shooting]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |`|remot| | | | | | | |remot=[[:Category:Working_Remotely|Working Remotely]]}}&lt;br /&gt;
{{chart/end}}&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Contents&amp;diff=1500</id>
		<title>Contents</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Contents&amp;diff=1500"/>
		<updated>2018-05-08T11:47:12Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{chart/start|align=center|summary=Contents of the Remeis wiki}}&lt;br /&gt;
{{chart| | | | |  |  | |   Wiki |  |   |   |      |  | Wiki=[[Main Page | '''Remeis Wiki''']]}}&lt;br /&gt;
{{chart| |   ,  |-|-|-|-|-|-|    +     |-|-|-|-|-|-|v|~|~|~|~|~|~|7        |  }}&lt;br /&gt;
{{chart| Info | | | | | Software | | | | | Physics | | | | | Internal | |&lt;br /&gt;
Info=[[:Category:General Information|'''General Information''']]|Software=[[:Category:Software|'''Software''']]|&lt;br /&gt;
Physics=[[:Category:Science|'''Science''']]|Internal=[[:Category:Internal|Internal]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |!| | | | | | | |:| }}&lt;br /&gt;
{{chart| )| curr | | | |)|cfits| | | |)|Accr | | | | admin | |&lt;br /&gt;
curr=[[:Category:Current_Members|For Current Members]]|cfits=[[:Category:CFITSIO_/_FPIPE|CFITSIO/FPIPE]]|&lt;br /&gt;
Accr=[[:Category:Accreting_X-ray_Pulsars|Accreting X-ray Pulsars]]|admin=[[:Category:Admin|Admin]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |!| |!| }}&lt;br /&gt;
{{chart| )| Obs | | | |)| data | | | |!| |`|src|&lt;br /&gt;
Obs=[[:Category:Observatory|On the Observatory]]|data=[[:Category:Data_Extraction|Data Extraction]]|src=[[:Category:XRP_Sources|Sources]]}}&lt;br /&gt;
{{chart| !| | | | | | |!| | | | | | |! | }}&lt;br /&gt;
{{chart| `| visit | | | |)| git| | | |)|Atom| | | |&lt;br /&gt;
visit=[[:Category:Visitors|For Visitors]]|git=[[:Category:GIT|GIT]]|Atom=[[:Category:Atomic_Physics|Atomic Physics]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | |! | }}&lt;br /&gt;
{{chart| | | | | | | |)|isis| | | |`|ero| | | |isis=[[:Category:Isis_/_Slang|ISIS/Slang]]|ero=[[:Category:eROSITA|eROSITA]]}}&lt;br /&gt;
{{chart| | | | | | | |!| |!| | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |!| |`|xfig| | | | | | |xfig=[[:Category:SLxfig|SLxfig]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}{{chart| | | | | | | |)|KDE| | | | | | | | |KDE=[[:Category:KDE|KDE]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|LaTeX| | | | | | | | |LaTeX=[[:Category:LaTeX|LaTeX]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|RCL| | | | | | | | |RCL=[[:Category:RCL|Remeis C Library]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|slurm| | | | | | | |slurm=[[:Category:Slurm|Slurm]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|tools| | | | | | | |tools=[[:Category:Tools|Tools]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |)|troub| | | | | | | |troub=[[:Category:Trouble_Shooting|Trouble Shooting]]}}&lt;br /&gt;
{{chart| | | | | | | |!| | | | | | | | }}&lt;br /&gt;
{{chart| | | | | | | |`|remot| | | | | | | |remot=[[:Category:Working_Remotely|Working Remotely]]}}&lt;br /&gt;
{{chart/end}}&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:Internal&amp;diff=1498</id>
		<title>Category:Internal</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Category:Internal&amp;diff=1498"/>
		<updated>2018-05-07T08:26:13Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page (and all other pages in the namespace 'intern') can only be viewed when logged-in.&lt;br /&gt;
&lt;br /&gt;
=== Administrative stuff ===&lt;br /&gt;
&lt;br /&gt;
* '''[[Ocotber 24th: Open House]]'''&lt;br /&gt;
 &lt;br /&gt;
* [[Common Practices at Remeis]]&lt;br /&gt;
&lt;br /&gt;
==== Travels ====&lt;br /&gt;
&lt;br /&gt;
* [[How to combine business and private travel]]&lt;br /&gt;
&lt;br /&gt;
=== Lab course ===&lt;br /&gt;
&lt;br /&gt;
[[How the lab manuals are structured and how you can edit them]]&lt;br /&gt;
&lt;br /&gt;
[[Planning page for the 40cm imaging experiment]]&lt;br /&gt;
&lt;br /&gt;
[[Planning page for the CCD lab ]]&lt;br /&gt;
&lt;br /&gt;
[[Tables to fill in dates and comments for every group]]&lt;br /&gt;
&lt;br /&gt;
[[Location of the lab equipment]]&lt;br /&gt;
&lt;br /&gt;
[[What to mention in the computer introduction]]&lt;br /&gt;
&lt;br /&gt;
=== Lit Club ===&lt;br /&gt;
[[List of Literature Club Talks]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
[[List of servers in the Remeis Cluster]]&lt;br /&gt;
&lt;br /&gt;
=== Mac Minis ===&lt;br /&gt;
&lt;br /&gt;
Here are some short information about the Mac Minis in Erlangen:&lt;br /&gt;
* Link to the ecap wiki (works only in erlangen or in bamberg) - https://doku.ecap.physik.uni-erlangen.de/ &lt;br /&gt;
* When you login in the keyboard layout will always be english&lt;br /&gt;
* The size of your $HOME directory is limited to 20 GB - only store files here, which cannot be reproduced e.g. scripts, etc..&lt;br /&gt;
* Store all the other stuff in /local/scratch&lt;br /&gt;
* Following programs will be installed on our Mac Minis:&lt;br /&gt;
**ISIS&lt;br /&gt;
**IDL&lt;br /&gt;
**HEADAS(FTOOLS)&lt;br /&gt;
**DS9&lt;br /&gt;
=== eROSITA ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[eROSITA - Bamberg]]&lt;br /&gt;
* [[Coding standards]]&lt;br /&gt;
* [[Needed functions and libraries]]&lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Preprocessing]]&lt;br /&gt;
* [[TODO]]&lt;br /&gt;
* [[fpipe-Treffen Tübingen 28.10.2010]]&lt;br /&gt;
* [[length of datatypes in C]]&lt;br /&gt;
&lt;br /&gt;
=== TANAMI ===&lt;br /&gt;
&lt;br /&gt;
* '''[[TANAMI| TANAMI - Start]]'''&lt;br /&gt;
* '''[[TANAMI - public]]'''&lt;br /&gt;
&lt;br /&gt;
=== Proposals ===&lt;br /&gt;
&lt;br /&gt;
When submitting a proposal for satellite observations usually a list of earlier &amp;lt;u&amp;gt;successful&amp;lt;/u&amp;gt; proposals is added. To make it easier to find those relevant for the individual observatory and the scientific aim of the current proposal, [[Proposals| here]] is a list of proposals our group was involved in. Please include title, PI/CoIs, cycle and publications based on the observation.&lt;br /&gt;
&lt;br /&gt;
=== Public Outreach ===&lt;br /&gt;
&lt;br /&gt;
* In general, [mailto:Katharina.Leiter@physik.uni-wuerzburg.de Katha Leiter] is the responsible person for outreach in the group of M. Kadler in Wuerzburg. You may want to talk to her.&lt;br /&gt;
* Guided Tours and Public Outreach at Remeis&lt;br /&gt;
** [[Guided Tours and Public Outreach | general informations and knowledge base]] for guides&lt;br /&gt;
** [http://www.sternwarte.uni-erlangen.de/intern/Kalender/index.php online calender] - where the tours have to be listed in addition to the whiteboad in the copymachine office&lt;br /&gt;
** [[available presentation and videos]]&lt;br /&gt;
* [[popular science]] - how to explain &amp;quot;what we do&amp;quot; and physical phenomena to the public&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
[[cinema | Movie schedule for the Remeis Movie Club]]&lt;br /&gt;
&lt;br /&gt;
[[phd_hat_list | List of future PhD's for hat matters]]&lt;br /&gt;
&lt;br /&gt;
[[RCL]]&lt;br /&gt;
&lt;br /&gt;
[[Remeis Gardening]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:XMM&amp;diff=1452</id>
		<title>Intern:Proposals:XMM</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:XMM&amp;diff=1452"/>
		<updated>2018-05-02T14:02:16Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:XMM to Proposals: XMM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Proposals: XMM]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_XMM&amp;diff=1451</id>
		<title>Proposals: XMM</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_XMM&amp;diff=1451"/>
		<updated>2018-05-02T14:02:16Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:XMM to Proposals: XMM&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XMM Proposals =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simultaneous XMM-Newton and Multiwavelength Observations of the Nucleus of CentaurusA ==&lt;br /&gt;
PI: Cornelia Müller, J. Wilms, M. Kadler, R. Ojha, A. Markowitz, M. Böck, T. Beuchert, T. Dauser, F. Krauß, E. Litzinger, K. Mannheim, R. Rothschild, F. Spanier, M. Weidinger and the TANAMI Collaboration (AO12)&lt;br /&gt;
&lt;br /&gt;
== Constraining the nature of \pmn: Is it a $\gamma$-loud young radio galaxy? ==&lt;br /&gt;
PI: Cornelia Müller, W. McConville, J. Wilms, M. Kadler, R. Ojha,F. Krauß, T. Dauser, A. Markowitz, M. Böck, C.C. Cheung, L. Stawarz, M.\,Dutka (AO12)&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_XMM&amp;diff=1450</id>
		<title>Proposals: XMM</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_XMM&amp;diff=1450"/>
		<updated>2018-05-02T14:02:04Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= XMM Proposals =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simultaneous XMM-Newton and Multiwavelength Observations of the Nucleus of CentaurusA ==&lt;br /&gt;
PI: Cornelia Müller, J. Wilms, M. Kadler, R. Ojha, A. Markowitz, M. Böck, T. Beuchert, T. Dauser, F. Krauß, E. Litzinger, K. Mannheim, R. Rothschild, F. Spanier, M. Weidinger and the TANAMI Collaboration (AO12)&lt;br /&gt;
&lt;br /&gt;
== Constraining the nature of \pmn: Is it a $\gamma$-loud young radio galaxy? ==&lt;br /&gt;
PI: Cornelia Müller, W. McConville, J. Wilms, M. Kadler, R. Ojha,F. Krauß, T. Dauser, A. Markowitz, M. Böck, C.C. Cheung, L. Stawarz, M.\,Dutka (AO12)&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:Suzaku&amp;diff=1449</id>
		<title>Intern:Proposals:Suzaku</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:Suzaku&amp;diff=1449"/>
		<updated>2018-05-02T14:01:29Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:Suzaku to Proposals: Suzaku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Proposals: Suzaku]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Suzaku&amp;diff=1448</id>
		<title>Proposals: Suzaku</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Suzaku&amp;diff=1448"/>
		<updated>2018-05-02T14:01:29Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:Suzaku to Proposals: Suzaku&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Suzaku Proposals =&lt;br /&gt;
&lt;br /&gt;
== Accreting Pulsar Sample ==&lt;br /&gt;
&lt;br /&gt;
=== Cyclotron Lines in Transient Pulsars I: Probing the B-Field ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D.M. Marcu, R.E. Rothschild, S. Suchy, E. Rivers,J. Wilms, I. Kreykenbohm, F. Fuerst, F. W. Schwarm, L. Barragan, M. Kuehnel, S. Mueller,&lt;br /&gt;
I. Caballero, P. Kretschmar, V.A. McBride, G. Schoenherr, M. DeCesar, R. Staubert, A. Santangelo, D. Klochkov, V. Doroshenko,&lt;br /&gt;
M. Finger, C. Wilson-Hodge, A. Camero, P.A. Jenke, C. Ferrigno, K. Makishima, T. Mihara, M. Nakajima, T. Enoto, Y. Terada, W., Iwakiri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cyclotron Lines in Transient Pulsars II: New Lines ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D.M. Marcu, R.E. Rothschild, S. Suchy, E. Rivers,J. Wilms, I. Kreykenbohm, F. Fuerst, F. W. Schwarm, L. Barragan, M. Kuehnel, S. Mueller,&lt;br /&gt;
I. Caballero, P. Kretschmar, V.A. McBride, G. Schoenherr, M. DeCesar, R. Staubert, A. Santangelo, D. Klochkov, V. Doroshenko,&lt;br /&gt;
M. Finger, C. Wilson-Hodge, A. Camero, P.A. Jenke, C. Ferrigno, K. Makishima, T. Mihara, M. Nakajima, T. Enoto, Y. Terada, W., Iwakiri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cyg X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1 with Suzaku and NuSTAR ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: J.A. Tomsick&lt;br /&gt;
&lt;br /&gt;
CoIs: M. Nowak, J. Wilms, K. Pottschmidt, D. Stern, F. Harrison&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Her X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Study of the cyclotron line feature in Hercules X-1: the profile and the short- and long-term variability ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: B.W. Grefenstette&lt;br /&gt;
&lt;br /&gt;
CoIs: J. Tomsick, D. Klochkov, D. Stern, J. Wilms, R. Staubert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4U 1538-522 ==&lt;br /&gt;
&lt;br /&gt;
=== The First Suzaku Observation of 4U1538-522 ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: R.E Rothschild&lt;br /&gt;
&lt;br /&gt;
CoIs: K. Pottschmidt, J. Wilms, P. Hemphill, I. Kreykenbohm, J.J. Rodes, J.M. Torrejon, S. Martinez-Nunez, D. Marcu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== GX 1+4 ==&lt;br /&gt;
&lt;br /&gt;
=== TOO OBSERVATIONS OF THE NEUTRON STAR / RED GIANT BINARY SYSTEM GX 1+4 / V2116 OPHIUCHI ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: A.Camero-Arranz&lt;br /&gt;
&lt;br /&gt;
CoIs: M. Finger, C. Wilson-Hogde, P.Jenke1, K. Pottschmidt, R.E. Rothschild, P. Kretschmar, I. Caballero, F. Fuerst, I. Kreykenbohm, A. González-Galán&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EXO 2030+375 ==&lt;br /&gt;
&lt;br /&gt;
=== Unveil accretion onset during a normal outburst of EXO2030+375 ===&lt;br /&gt;
approved 2012, Suzaku AO-7, ESA&lt;br /&gt;
&lt;br /&gt;
PI: C. Ferrigno&lt;br /&gt;
&lt;br /&gt;
CoIs: D. Klochkov, V. Doroshenko, A. Santangelo, C. Wilson-Hodge, A. Camero-Arranz, J. Wilms, I. Kreykenbohm, K. Pottschmidt, E. Bozzo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== X Per ==&lt;br /&gt;
&lt;br /&gt;
=== Cracking the X Per ===&lt;br /&gt;
approved 2012, Suzaku AO-7, ESA&lt;br /&gt;
&lt;br /&gt;
PI: V. Doroshenko&lt;br /&gt;
&lt;br /&gt;
CoIs: A. Santangelo, I. Kreykenbohm, D. Klochkov, J. Wilms, K. Pottschmidt, R.E. Rothschild&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4U 1909+07 ==&lt;br /&gt;
=== Studying accretion in the uncelebrated HMXB 4U 1909+07 ===&lt;br /&gt;
approved 2010, Suzaku AO-5, ESA&lt;br /&gt;
&lt;br /&gt;
PI: F. Fuerst&lt;br /&gt;
&lt;br /&gt;
CoIs: I. Kreykenbohm, J. Wilms, L. Barragan, K. Pottschmidt, R. E. Rothschild, S. Suchy,&lt;br /&gt;
M. Hanke, P. Kretschmar, F. Schwarm, Y. Terada, and the MAGNET collaboration&lt;br /&gt;
&lt;br /&gt;
observation performed 2010-11-03 for ~20ksec, spectrum shown in Felix' PhD thesis&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Suzaku&amp;diff=1447</id>
		<title>Proposals: Suzaku</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Suzaku&amp;diff=1447"/>
		<updated>2018-05-02T14:00:48Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Suzaku Proposals =&lt;br /&gt;
&lt;br /&gt;
== Accreting Pulsar Sample ==&lt;br /&gt;
&lt;br /&gt;
=== Cyclotron Lines in Transient Pulsars I: Probing the B-Field ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D.M. Marcu, R.E. Rothschild, S. Suchy, E. Rivers,J. Wilms, I. Kreykenbohm, F. Fuerst, F. W. Schwarm, L. Barragan, M. Kuehnel, S. Mueller,&lt;br /&gt;
I. Caballero, P. Kretschmar, V.A. McBride, G. Schoenherr, M. DeCesar, R. Staubert, A. Santangelo, D. Klochkov, V. Doroshenko,&lt;br /&gt;
M. Finger, C. Wilson-Hodge, A. Camero, P.A. Jenke, C. Ferrigno, K. Makishima, T. Mihara, M. Nakajima, T. Enoto, Y. Terada, W., Iwakiri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cyclotron Lines in Transient Pulsars II: New Lines ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D.M. Marcu, R.E. Rothschild, S. Suchy, E. Rivers,J. Wilms, I. Kreykenbohm, F. Fuerst, F. W. Schwarm, L. Barragan, M. Kuehnel, S. Mueller,&lt;br /&gt;
I. Caballero, P. Kretschmar, V.A. McBride, G. Schoenherr, M. DeCesar, R. Staubert, A. Santangelo, D. Klochkov, V. Doroshenko,&lt;br /&gt;
M. Finger, C. Wilson-Hodge, A. Camero, P.A. Jenke, C. Ferrigno, K. Makishima, T. Mihara, M. Nakajima, T. Enoto, Y. Terada, W., Iwakiri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cyg X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1 with Suzaku and NuSTAR ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: J.A. Tomsick&lt;br /&gt;
&lt;br /&gt;
CoIs: M. Nowak, J. Wilms, K. Pottschmidt, D. Stern, F. Harrison&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Her X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Study of the cyclotron line feature in Hercules X-1: the profile and the short- and long-term variability ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: B.W. Grefenstette&lt;br /&gt;
&lt;br /&gt;
CoIs: J. Tomsick, D. Klochkov, D. Stern, J. Wilms, R. Staubert&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4U 1538-522 ==&lt;br /&gt;
&lt;br /&gt;
=== The First Suzaku Observation of 4U1538-522 ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: R.E Rothschild&lt;br /&gt;
&lt;br /&gt;
CoIs: K. Pottschmidt, J. Wilms, P. Hemphill, I. Kreykenbohm, J.J. Rodes, J.M. Torrejon, S. Martinez-Nunez, D. Marcu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
== GX 1+4 ==&lt;br /&gt;
&lt;br /&gt;
=== TOO OBSERVATIONS OF THE NEUTRON STAR / RED GIANT BINARY SYSTEM GX 1+4 / V2116 OPHIUCHI ===&lt;br /&gt;
approved 2012, Suzaku AO-7, NASA&lt;br /&gt;
&lt;br /&gt;
PI: A.Camero-Arranz&lt;br /&gt;
&lt;br /&gt;
CoIs: M. Finger, C. Wilson-Hogde, P.Jenke1, K. Pottschmidt, R.E. Rothschild, P. Kretschmar, I. Caballero, F. Fuerst, I. Kreykenbohm, A. González-Galán&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EXO 2030+375 ==&lt;br /&gt;
&lt;br /&gt;
=== Unveil accretion onset during a normal outburst of EXO2030+375 ===&lt;br /&gt;
approved 2012, Suzaku AO-7, ESA&lt;br /&gt;
&lt;br /&gt;
PI: C. Ferrigno&lt;br /&gt;
&lt;br /&gt;
CoIs: D. Klochkov, V. Doroshenko, A. Santangelo, C. Wilson-Hodge, A. Camero-Arranz, J. Wilms, I. Kreykenbohm, K. Pottschmidt, E. Bozzo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== X Per ==&lt;br /&gt;
&lt;br /&gt;
=== Cracking the X Per ===&lt;br /&gt;
approved 2012, Suzaku AO-7, ESA&lt;br /&gt;
&lt;br /&gt;
PI: V. Doroshenko&lt;br /&gt;
&lt;br /&gt;
CoIs: A. Santangelo, I. Kreykenbohm, D. Klochkov, J. Wilms, K. Pottschmidt, R.E. Rothschild&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 4U 1909+07 ==&lt;br /&gt;
=== Studying accretion in the uncelebrated HMXB 4U 1909+07 ===&lt;br /&gt;
approved 2010, Suzaku AO-5, ESA&lt;br /&gt;
&lt;br /&gt;
PI: F. Fuerst&lt;br /&gt;
&lt;br /&gt;
CoIs: I. Kreykenbohm, J. Wilms, L. Barragan, K. Pottschmidt, R. E. Rothschild, S. Suchy,&lt;br /&gt;
M. Hanke, P. Kretschmar, F. Schwarm, Y. Terada, and the MAGNET collaboration&lt;br /&gt;
&lt;br /&gt;
observation performed 2010-11-03 for ~20ksec, spectrum shown in Felix' PhD thesis&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:Chandra&amp;diff=1444</id>
		<title>Intern:Proposals:Chandra</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Intern:Proposals:Chandra&amp;diff=1444"/>
		<updated>2018-05-02T13:54:12Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:Chandra to Proposals: Chandra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Proposals: Chandra]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1443</id>
		<title>Proposals: Chandra</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1443"/>
		<updated>2018-05-02T13:54:12Z</updated>

		<summary type="html">&lt;p&gt;Obst: Obst moved page Intern:Proposals:Chandra to Proposals: Chandra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Chandra Proposals =&lt;br /&gt;
&lt;br /&gt;
== Cyg X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO15&lt;br /&gt;
&lt;br /&gt;
The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission. The present proposal is a resubmission of this and the AO12--AO14 programs.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO14&lt;br /&gt;
&lt;br /&gt;
The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, M. Hanke, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, Chandra Guest Observer Program, AO13&lt;br /&gt;
&lt;br /&gt;
The observation was scheduled in 2012 February but we canceled it before execution due to Cyg X-1 returning&lt;br /&gt;
into the soft state and it was not rescheduled.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Manfred Hanke, CoIs: J. Wilms, M.A. Nowak, L. Oskinova, K. Pottschmidt, N. Schulz,&lt;br /&gt;
F. Fürst, I. Miškovičová, J. Torrejón, Chandra Guest Observer Program, AO12&lt;br /&gt;
&lt;br /&gt;
Observation performed in 2011 January and analyzed. No lines were seen due to strong photoionization caused by the soft state of the source. Data given to the group of J. McClintock in order to help with the determination of the spin of the black hole from continuum fitting (paper submitted).&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1 Viewed Outside of its Secondary's Wind ===&lt;br /&gt;
PI: Michael A. Nowak, Co-Is: J. Wilms, M. Hanke, N. Schulz, C. Canizares, K. Pottschmidt, Chandra Guest Observer Program, AO11 &lt;br /&gt;
&lt;br /&gt;
Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO9 observation).&lt;br /&gt;
 &lt;br /&gt;
=== Joint XMM-Newton/Chandra/RXTE Observations of Dips in Cyg X-1 ===&lt;br /&gt;
PI: Jörn Wilms, CoIs: M.A. Nowak, K. Pottschmidt, S. Fritz, N.S. Schulz, C. Canizares, Chandra Guest Observer Program, AO9&lt;br /&gt;
&lt;br /&gt;
Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO11 observation).&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1: X-ray Dips, Distance, and the X-ray Halo ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: J. Wilms, M.A. Nowak, J. Lee, R. McCray, A. Allen, P. Predehl, Chandra Guest Observer Program, 2002--2003.&lt;br /&gt;
&lt;br /&gt;
Observation performed, two papers published, multiple conference posters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3A 1954+319 ==&lt;br /&gt;
=== Exposing the symbiosis of 3A 1954+319 ===&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D. M. Marcu, F. Fuerst, R. H. D. Corbet, C. B. Markwardt, J. Wilms, S. Suchy, R. E. Rothschild, and the MAGNET collaboration&lt;br /&gt;
&lt;br /&gt;
observation performed in a very low luminosity state&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1442</id>
		<title>Proposals: Chandra</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1442"/>
		<updated>2018-05-02T13:53:47Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Chandra Proposals =&lt;br /&gt;
&lt;br /&gt;
== Cyg X-1 ==&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO15&lt;br /&gt;
&lt;br /&gt;
The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission. The present proposal is a resubmission of this and the AO12--AO14 programs.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO14&lt;br /&gt;
&lt;br /&gt;
The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, M. Hanke, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, Chandra Guest Observer Program, AO13&lt;br /&gt;
&lt;br /&gt;
The observation was scheduled in 2012 February but we canceled it before execution due to Cyg X-1 returning&lt;br /&gt;
into the soft state and it was not rescheduled.&lt;br /&gt;
&lt;br /&gt;
=== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ===&lt;br /&gt;
PI: Manfred Hanke, CoIs: J. Wilms, M.A. Nowak, L. Oskinova, K. Pottschmidt, N. Schulz,&lt;br /&gt;
F. Fürst, I. Miškovičová, J. Torrejón, Chandra Guest Observer Program, AO12&lt;br /&gt;
&lt;br /&gt;
Observation performed in 2011 January and analyzed. No lines were seen due to strong photoionization caused by the soft state of the source. Data given to the group of J. McClintock in order to help with the determination of the spin of the black hole from continuum fitting (paper submitted).&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1 Viewed Outside of its Secondary's Wind ===&lt;br /&gt;
PI: Michael A. Nowak, Co-Is: J. Wilms, M. Hanke, N. Schulz, C. Canizares, K. Pottschmidt, Chandra Guest Observer Program, AO11 &lt;br /&gt;
&lt;br /&gt;
Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO9 observation).&lt;br /&gt;
 &lt;br /&gt;
=== Joint XMM-Newton/Chandra/RXTE Observations of Dips in Cyg X-1 ===&lt;br /&gt;
PI: Jörn Wilms, CoIs: M.A. Nowak, K. Pottschmidt, S. Fritz, N.S. Schulz, C. Canizares, Chandra Guest Observer Program, AO9&lt;br /&gt;
&lt;br /&gt;
Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO11 observation).&lt;br /&gt;
&lt;br /&gt;
=== Cygnus X-1: X-ray Dips, Distance, and the X-ray Halo ===&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: J. Wilms, M.A. Nowak, J. Lee, R. McCray, A. Allen, P. Predehl, Chandra Guest Observer Program, 2002--2003.&lt;br /&gt;
&lt;br /&gt;
Observation performed, two papers published, multiple conference posters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 3A 1954+319 ==&lt;br /&gt;
=== Exposing the symbiosis of 3A 1954+319 ===&lt;br /&gt;
PI: K. Pottschmidt&lt;br /&gt;
&lt;br /&gt;
CoIs: D. M. Marcu, F. Fuerst, R. H. D. Corbet, C. B. Markwardt, J. Wilms, S. Suchy, R. E. Rothschild, and the MAGNET collaboration&lt;br /&gt;
&lt;br /&gt;
observation performed in a very low luminosity state&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1441</id>
		<title>Proposals: Chandra</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals:_Chandra&amp;diff=1441"/>
		<updated>2018-05-02T13:51:12Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== Chandra Proposals ======&lt;br /&gt;
&lt;br /&gt;
===== Cyg X-1 =====&lt;br /&gt;
&lt;br /&gt;
== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ==&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO15\\&lt;br /&gt;
//The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission. The present proposal is a resubmission of this and the AO12--AO14 programs.//&lt;br /&gt;
&lt;br /&gt;
== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ==&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, N. Hell, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, M. Hanke, G.V. Brown, D. Liedahl, Chandra Guest Observer Program, AO14\\&lt;br /&gt;
//The observation was proposed and won as a ToO but has not been triggered yet as of the time of submission.//&lt;br /&gt;
&lt;br /&gt;
== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ==&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: I. Miškovičová, D. Marcu, M. Hanke, J. Wilms, M.A. Nowak, L. Oskinova, N. Schulz, F. Fürst, J. Torrejón, Chandra Guest Observer Program, AO13\\&lt;br /&gt;
//The observation was scheduled in 2012 February but we canceled it before execution due to Cyg X-1 returning&lt;br /&gt;
into the soft state and it was not rescheduled.//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Filling the gap in understanding the wind structure of HDE 226868 / Cyg X-1: ==&lt;br /&gt;
PI: Manfred Hanke, CoIs: J. Wilms, M.A. Nowak, L. Oskinova, K. Pottschmidt, N. Schulz,&lt;br /&gt;
F. Fürst, I. Miškovičová, J. Torrejón, Chandra Guest Observer Program, AO12\\&lt;br /&gt;
//Observation performed in 2011 January and analyzed. No lines were seen due to strong photoionization caused by the soft state of the source. Data given to the group of J. McClintock in order to help with the determination of the spin of the black hole from continuum fitting (paper submitted).//&lt;br /&gt;
&lt;br /&gt;
== Cygnus X-1 Viewed Outside of its Secondary's Wind == &lt;br /&gt;
PI: Michael A. Nowak, Co-Is: J. Wilms, M. Hanke, N. Schulz, C. Canizares, K. Pottschmidt, Chandra Guest Observer Program, AO11 \\&lt;br /&gt;
//Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO9 observation).//&lt;br /&gt;
 &lt;br /&gt;
== Joint XMM-Newton/Chandra/RXTE Observations of Dips in Cyg X-1 == &lt;br /&gt;
PI: Jörn Wilms, CoIs: M.A. Nowak, K. Pottschmidt, S. Fritz, N.S. Schulz, C. Canizares, Chandra Guest Observer Program, AO9\\&lt;br /&gt;
//Observation performed, analyzed, results presented at several conferences and in the PhD thesis of M. Hanke, refereed publication submitted (jointly with the AO11 observation).//&lt;br /&gt;
&lt;br /&gt;
== Cygnus X-1: X-ray Dips, Distance, and the X-ray Halo ==&lt;br /&gt;
PI: Katja Pottschmidt, CoIs: J. Wilms, M.A. Nowak, J. Lee, R. McCray, A. Allen, P. Predehl, Chandra Guest Observer Program, 2002--2003.\\ &lt;br /&gt;
//Observation performed, two papers published, multiple conference posters.//&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== 3A 1954+319 =====&lt;br /&gt;
== Exposing the symbiosis of 3A 1954+319 ==&lt;br /&gt;
PI: K. Pottschmidt\\&lt;br /&gt;
CoIs: D. M. Marcu, F. Fuerst, R. H. D. Corbet, C. B. Markwardt, J. Wilms, S. Suchy, R. E. Rothschild, and the MAGNET collaboration&lt;br /&gt;
//observation performed in a very low luminosity state//&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Torque&amp;diff=1440</id>
		<title>Torque</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Torque&amp;diff=1440"/>
		<updated>2018-05-02T13:49:47Z</updated>

		<summary type="html">&lt;p&gt;Obst: Created page with &amp;quot;====== Torque ====== ===== About Torque and Maui =====  For distributing the workload of scientific calculations to the available compute nodes (a node in the case of the Reme...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====== Torque ======&lt;br /&gt;
===== About Torque and Maui =====&lt;br /&gt;
&lt;br /&gt;
For distributing the workload of scientific calculations to the available compute nodes (a node in the case of the Remeis Cluster is one computer) a resource manager can be used together with a scheduling system. This minimizes the submission effort and maximizes the efficiency by selecting the nodes automatically according to some node allocation policy. In the Remeis Cluster Torque is used together with maui for this purpose.&lt;br /&gt;
&lt;br /&gt;
From [[http://www.clusterresources.com|Cluster Resources, Inc.]]:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;TORQUE Resource Manager provides control over batch jobs and distributed computing resources. It is an advanced open-source product based on the original PBS project* and incorporates the best of both community and professional development. It incorporates significant advances in the areas of scalability, reliability, and functionality and is currently in use at tens of thousands of leading government, academic, and commercial sites throughout the world. TORQUE may be freely used, modified, and distributed under the constraints of the included license.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Maui Cluster Scheduler, the precursor to Moab Cluster Suite, is an open source job scheduler for clusters and supercomputers. It is an optimized, configurable tool capable of supporting an array of scheduling policies, dynamic priorities, extensive reservations, and fairshare capabilities. It is currently in use at hundreds of government, academic, and commercial sites throughout the world.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Prerequisites =====&lt;br /&gt;
&lt;br /&gt;
For being able to use the submitting system at the Remeis Cluster you need an account with password-less ssh connections enabled. So you have to be able to login to any of the compute nodes by typing ''ssh hostname'' without being ask for your password. If this does not work for you, please read about [[ssh-keys:start|SSH - Keys]] first.&lt;br /&gt;
&lt;br /&gt;
===== Jobscripts =====&lt;br /&gt;
&lt;br /&gt;
For making use of the scheduling system programs have to be submitted as a jobscript. [[http://www.clusterresources.com/torquedocs/2.1jobsubmission.shtml|Cluster Resources, Inc.]] nicely explains the principles of job submission as well as the structure and syntax of a jobscript. After writing the jobscript it can be submitted using the [[http://www.clusterresources.com/torquedocs21/commands/qsub.shtml|qsub]] command. If you want to start real parallel code, like MPI or OpenMP programs, you should write the jobscript yourself. If you just want to submit a batch job consisting of many executions of a serial program the automated job submission described below can be used to generate jobscripts and submit them for you.&lt;br /&gt;
&lt;br /&gt;
A jobscript ''example.torque.job'' could for example look like this:&lt;br /&gt;
  #!/bin/bash&lt;br /&gt;
  #&lt;br /&gt;
  #PBS -S /bin/bash -V&lt;br /&gt;
  #PBS -t 0-3%10000                   %comment: give the number of how many commands you have, e.g. 4&lt;br /&gt;
  #PBS -l nodes=1                     %comment: how many nodes per command you want to use&lt;br /&gt;
  #PBS -l walltime=48:00:00           %comment: the time after which torque kills the script, here 48h&lt;br /&gt;
  #PBS -N my_cool_fitting             %comment: name that you can see in the torque job-list&lt;br /&gt;
  #PBS -o /home/user/torque/cool_fitting.out    %comment: where to write the output&lt;br /&gt;
  #PBS -e /home/user/torque/cool_fitting.err    %comment: where to write the error messages&lt;br /&gt;
  export HOST=`hostname`&lt;br /&gt;
  export HOSTNAME=$HOST&lt;br /&gt;
  &lt;br /&gt;
  cd /path/where/your/script/is_located/&lt;br /&gt;
  &lt;br /&gt;
  COMMAND[0]=&amp;quot;isis-script cool_fitting_1.sl&amp;quot;&lt;br /&gt;
  COMMAND[1]=&amp;quot;isis-script cool_fitting_2.sl&amp;quot;&lt;br /&gt;
  COMMAND[2]=&amp;quot;isis-script cool_fitting_3.sl&amp;quot;&lt;br /&gt;
  COMMAND[3]=&amp;quot;isis-script cool_fitting_4.sl&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  /usr/bin/nice -n +15 ${COMMAND[$PBS_ARRAYID]}&lt;br /&gt;
  &lt;br /&gt;
The %comment-things should not be put in the script!&lt;br /&gt;
&lt;br /&gt;
===== Queues =====&lt;br /&gt;
&lt;br /&gt;
The following queues are available at Remeis (see the outputs of the ''qstat -q'' and ''qstat -Q'' commands): &lt;br /&gt;
&lt;br /&gt;
  * batch: the standard queue. This assumes that your job does not have large memory requirements but uses all available hosts. Do NOT use this queue if you need more than 1GB of RAM without specifying your memory requirements!&lt;br /&gt;
  * leo: large memory, parallel jobs, and so on.&lt;br /&gt;
  * loft: only to be used for the LOFT project.&lt;br /&gt;
  * devel: high priority queue for software development, therefore the maximum available walltime is limited.&lt;br /&gt;
===== Automated job submission =====&lt;br /&gt;
&lt;br /&gt;
Often a user wants to run a program on different data sets without having to write a separate jobscript for each execution. This section describes how that can be achieved easily by using the helper scripts ''qsub_array'' and ''qsub_batch''.&lt;br /&gt;
&lt;br /&gt;
==== qsub_array ====&lt;br /&gt;
&lt;br /&gt;
The command qsub_array can be used to generate a jobscript for an array job containing all the commands found in a command file.&lt;br /&gt;
&lt;br /&gt;
A command file ''example.com'' could for example look like this:&lt;br /&gt;
  echo Command 1: I am `whoami` on host `hostname` in directory `pwd`&lt;br /&gt;
  echo Command 2: I am `whoami` on host `hostname` in directory `pwd`&lt;br /&gt;
  echo Command 3: I am `whoami` on host `hostname` in directory `pwd`&lt;br /&gt;
  echo Command 4: I am `whoami` on host `hostname` in directory `pwd`&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
Generate jobscript and submit:&lt;br /&gt;
  qsub_array example.com&lt;br /&gt;
  &lt;br /&gt;
A jobscript ''example.com.job'' is created in the executing directory and the commands are distributed on the cluster. By default commands should be started on the fastest nodes with the least 1 min load average. Output to stdout is collected and redirected to a output file after job completion. Same applies for stderr. The default location of the output and error files is ''/tmp/pbs/user'', so the output is stored on the local machine from which the job was submitted. The job is executed as the submitting user and starts in its home directory (IMPORTANT: Please use the scratch disk if your job needs significant disk space!). If a job shall be resubmitted this can be done by either invoking qsub_array on the command file again, or by submitting the generated jobscript ''example.com.job'' directly using ''qsub example.com.job''. This way the user has the possibility to add extended PBS options to the jobscript or to change the output filenames using qsub's ''-o /path/to/stdoutfile'' option which overrides the default setting.&lt;br /&gt;
&lt;br /&gt;
The example job submitted by user ''Hans'' would create the output files ''/tmp/pbs/hans/example.com.out-0'' to ''/tmp/pbs/hans/example.com.out-3'' and the corresponding error files ''/tmp/pbs/hans/example.com.err-0'' to ''/tmp/pbs/hans/example.com.err-3'':&lt;br /&gt;
&lt;br /&gt;
  hans@octans:~$ ls /tmp/pbs/hans&lt;br /&gt;
  example.com.err-0  example.com.err-1  example.com.err-2  example.com.err-3  example.com.out-0  example.com.out-1  example.com.out-2  example.com.out-3&lt;br /&gt;
  &lt;br /&gt;
  hans@octans:~$ cat /tmp/pbs/hans/*.out*&lt;br /&gt;
  Command 1: I am hans on host phoenix in directory /home/hans&lt;br /&gt;
  Command 2: I am hans on host grus in directory /home/hans&lt;br /&gt;
  Command 3: I am hans on host hydra in directory /home/hans&lt;br /&gt;
  Command 4: I am hans on host piscis in directory /home/hans&lt;br /&gt;
  &lt;br /&gt;
qsub_array provides some options for requesting specific resources. Some of them should be used for almost any job (e.g. ''%%--%%walltime''), others should be used only if you really know what you are doing (e.g. ''%%--%%nodes'').&lt;br /&gt;
''qsub_array %%--%%help'' shows the available options:&lt;br /&gt;
  Submit array of jobs given in a command file&lt;br /&gt;
  Usage:  qsub_array &amp;lt;comfile&amp;gt; [&amp;lt;option1=...&amp;gt; [&amp;lt;option2=...&amp;gt; [...]]]&lt;br /&gt;
  Options:&lt;br /&gt;
        --help:         Show this help&lt;br /&gt;
        -e/--exclude:   Exclude comma seperated list of hosts&lt;br /&gt;
        -h/--hostlist:  Require nodes to be a subset of a comma seperated list of hosts&lt;br /&gt;
        -l/--limit:     Maximum number of jobs running in parallel&lt;br /&gt;
        -m/--memory:    RAM needed by the program&lt;br /&gt;
        -N/--name:      Name of the job&lt;br /&gt;
        -n/--nice:      Nice level&lt;br /&gt;
        --nodes:        Number of nodes to be used by the program&lt;br /&gt;
        --ppn:          Number of processors to be used on each node&lt;br /&gt;
        -p/--pretend:   Generate jobscript but do not submit&lt;br /&gt;
        -q/--queue:     Queue to submit the job to&lt;br /&gt;
        -s/--single:    Allow to start only one job per node (blocks other jobs but helpful for PVM jobs)&lt;br /&gt;
        -v/--verbose:   More output to stdout for debugging&lt;br /&gt;
        -w/--walltime:  Maximum walltime for the program&lt;br /&gt;
        -a/--arch:      Specifiy the Architecture ( 32bit (x86) or 64bit (x86_64) )&lt;br /&gt;
  &lt;br /&gt;
  Syntax of command file:&lt;br /&gt;
        Each line from &amp;lt;comfile&amp;gt; is interpreted as a command.&lt;br /&gt;
  &lt;br /&gt;
  Examples:&lt;br /&gt;
        Acquire 2 GB RAM for a job running max. 1h 30min on nice level 18:&lt;br /&gt;
        qsub_array joblist.txt --memory=2000M --nice=18 --walltime=01:30:00&lt;br /&gt;
&lt;br /&gt;
//NOTE: Option arguments must be given in the %%--%%option=argument fashion! Memory should be given in MB, disk space in GB though in principle the 'M' and 'G' endings are possible for all size options and should cause no problems.//&lt;br /&gt;
&lt;br /&gt;
At the moment the default walltime (time after which your program is killed if it is still active) is set to 30 min. This is certainly not enough for most production runs. Therefore you have to explicitly request for more time using the ''%%--%%walltime=hh:mm:ss'' option. The walltime should be as close as possible to but not less than the real time needed by a program. Due to the heterogeneous nature of our cluster the execution time also depends on the execution hosts and should generally be a little bit overestimated. The given walltime always applies to all jobs of an array.&lt;br /&gt;
&lt;br /&gt;
Your environment variables will be exported to each job such that your job will start in an environment like the one you started the job in but with variables $HOST and $HOSTNAME set to the name of the actual host.&lt;br /&gt;
&lt;br /&gt;
==== qsub_batch ====&lt;br /&gt;
&lt;br /&gt;
Most of the time it is most convenient to submit multiple jobs as one job-array. But if the jobs have nothing to do with each other one might consider submitting them separately. Therefore a script ''qsub_batch'' exists which does the same as ''qsub_array'' but generates and submits one jobscript for each command. ''qsub_array'' should generally be preferred especially for large jobs (&amp;gt;100).&lt;br /&gt;
&lt;br /&gt;
===== Useful commands =====&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qstat.shtml|qstat]]** provides several options to show useful information about your jobs or job queues.&lt;br /&gt;
&lt;br /&gt;
  * ''qstat'' shows your queued/running/completed jobs together with their job id&lt;br /&gt;
  * ''qstat -t'' lists all members of array jobs&lt;br /&gt;
  * ''qstat -n'' also lists the nodes the jobs are allocated to&lt;br /&gt;
  * ''qstat -q'' shows the queues and their status&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qsub.shtml|qsub]]** submits a jobscript. The requested resources specified on the command line override the values given in the jobscript.&lt;br /&gt;
&lt;br /&gt;
  * ''qsub -o ~/myoutput.out jobscript.job'' submits the jobscript ''jobscript.job'' and sets the stdout output to ~/myoutput.o&lt;br /&gt;
  * ''qsub -e ~/myoutput.err jobscript.job'' same as ''qsub -o'' but for output to stderr&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qhold.shtml|qhold]]** can be used to hold a job. If a user's job limit is already reached, the user can hold a previously submitted job such that a new job can be started immediately.&lt;br /&gt;
&lt;br /&gt;
  * ''qhold &amp;lt;jobid&amp;gt;'' holds the corresponding job&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qrls.shtml|qrls]]** continues halted jobs.&lt;br /&gt;
&lt;br /&gt;
  * ''qrls &amp;lt;jobid&amp;gt;'' releases the hold of the corresponding job.&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qdel.shtml|qdel]]** is used to delete queued jobs as well as running jobs.&lt;br /&gt;
&lt;br /&gt;
  * ''qdel &amp;lt;jobid&amp;gt;'' deletes the job with the corresponding job id&lt;br /&gt;
  * ''qdel all'' deletes all jobs of a user&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs21/commands/qsig.shtml|qsig]]** sends a signal to a job and can be used to kill zombie jobs which can not be killed by ''qdel''.&lt;br /&gt;
&lt;br /&gt;
  * ''qsig -s 9 &amp;lt;jobid&amp;gt;'' sends a SIGKILL to job &amp;lt;idnumber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
**[[http://www.clusterresources.com/torquedocs/commands/qalter.shtml|qalter]]** enables a user to change a job's attributes after job submission. This is for example useful if a job does not start due to unsatisfiable resource requests.&lt;br /&gt;
&lt;br /&gt;
===== MPI Jobs =====&lt;br /&gt;
&lt;br /&gt;
The MPI Implementation MPICH2 is available for execution of MPI programs. For the compilation of MPI programs the compilers ''mpicc'', ''mpic++'', ''mpif77'' and ''mpif90'' should be used for programs written in C, C++, Fortran77 and Fortran90 respectively to ensure that the right MPI libraries are linked in. To start a MPI program you will have to precede the program name with ''mpiexec'' (//NOTE: DO NOT USE ''mpirun''!//):&lt;br /&gt;
   mpiexec program&lt;br /&gt;
&lt;br /&gt;
This can either be done within a jobscript or within a command file which is passed to ''qsub_array''.&lt;br /&gt;
&lt;br /&gt;
==== Parallel Error Calculation with MPI and SLmpi ====&lt;br /&gt;
&lt;br /&gt;
The routine ''mpi_fit_pars'' from the isisscripts calculates confidence intervals in parallel on different machines. See [[isis:mpi|Parallel Error Calculation with MPI and SLmpi]] for more information and examples.&lt;br /&gt;
===== PVM Jobs =====&lt;br /&gt;
&lt;br /&gt;
For using ''qsub_array'' or ''qsub_batch'' in combination with programs using PVM for parallel computing the ''%%--%%pvm'' option has to be specified. PVM daemons are started on the allocated nodes automatically before the program is run. This option automatically sets to other options:&lt;br /&gt;
  * ''%%--%%single'': Ensure that only one PVM job is running at one node at the same time&lt;br /&gt;
  * ''%%--%%limit=1'': Only one PVM job within an array of PVM jobs can run at the same time&lt;br /&gt;
&lt;br /&gt;
If you really need to overcome these restrictions you will have to write a jobscript by your own.&lt;br /&gt;
&lt;br /&gt;
===== Interactive Jobs =====&lt;br /&gt;
&lt;br /&gt;
It is also possible to acquire multiple processors for an interactive session if enough processors are available to start the session immediately. The number of available processors can be obtained by having a look at the [[http://www.sternwarte.uni-erlangen.de/new/intern/RemeisCluster.html|Remeis Cluster Status Page]]. An interactive session is started by invoking ''qsub'' with the ''-I'' parameter. The amount of resources needed for the session is given after the ''-l'' parameter. The supported types of resources can be seen at the [[http://www.clusterresources.com/torquedocs21/2.1jobsubmission.shtml#resources|resource section of the job submission description]].&lt;br /&gt;
If you, for example, want start a simple interactive session with X-forwarding enabled:&lt;br /&gt;
   qsub -I -X&lt;br /&gt;
For parallel jobs you can of course acquire more nodes / processors per node. An interactive session using 2 nodes and an estimated walltime of 10h, for example, can be started with the following command:&lt;br /&gt;
   qsub -I -X -l nodes=2,walltime=10:00:00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
After starting the interactive session commands can be executed just like within a normal shell but within the environment of a PBS jobscript. So you can use ''mpiexec'' just like within a jobscript without having to specify the number of nodes on the command line.&lt;br /&gt;
===== Status of the Remeis Cluster  =====&lt;br /&gt;
&lt;br /&gt;
The [[http://www.sternwarte.uni-erlangen.de/new/intern/RemeisCluster.html|Remeis Cluster Status Page]] contains some information about the current node usage.&lt;br /&gt;
&lt;br /&gt;
This page only works from within the observatory network. From outside, you can get the same info in an in-shell browser via the command &lt;br /&gt;
   clusterStatus &lt;br /&gt;
&lt;br /&gt;
Just ssh to any of the observatory machines and execute the command.&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=TcShell&amp;diff=1439</id>
		<title>TcShell</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=TcShell&amp;diff=1439"/>
		<updated>2018-05-02T13:48:52Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Tools]]&lt;br /&gt;
&lt;br /&gt;
The interface between the unix system and the user is called (unix-)'''shell'''. There are in principle many types of shells available. They differ in built-in commands and scripting syntax (e.g. 	&lt;br /&gt;
&amp;lt;code&amp;gt;for-loops&amp;lt;/code&amp;gt;). However, the commands for basic file operations (&amp;lt;code&amp;gt;cd, cp, rm, ...&amp;lt;/code&amp;gt;) are in principle identical and running other programs is done by executing the binary file via &amp;lt;code&amp;gt;./binaryfile&amp;lt;/code&amp;gt;. If the binary is located in one of the directories specified in the &amp;lt;code&amp;gt;PATH&amp;lt;/code&amp;gt; variable, the program can be executed from every where in the file system without the leading ./&lt;br /&gt;
&lt;br /&gt;
Nearly all unix distributions (Ubuntu, SuSe, ...) are using a different default shell. The default shell on the Remeis computers is the '''TC-shell''', which is based on the C-shell. If you want to know on which shell you are operating right now, type&lt;br /&gt;
  echo $SHELL&lt;br /&gt;
in, which should result in &amp;lt;code&amp;gt;/bin/tcsh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
Each user can change the default behavior of the TC-shell via the configuration file ~/.cshrc &amp;lt;br /&amp;gt;&lt;br /&gt;
This file gets executed each time a new TC-shell is started. Thus changes are applied only after a new shell is opened! The default configuration file looks like&lt;br /&gt;
&lt;br /&gt;
  #!/bin/tcsh -f&lt;br /&gt;
  &lt;br /&gt;
  set prompt=&amp;quot;%n@%m:%~&amp;gt; &amp;quot;&lt;br /&gt;
  set nobeep = 1&lt;br /&gt;
  set matchbeep = never&lt;br /&gt;
  alias l 'ls -l --color=auto'&lt;br /&gt;
  alias ls 'ls --color=auto'&lt;br /&gt;
  &lt;br /&gt;
  # setenv EDITOR jed&lt;br /&gt;
  &lt;br /&gt;
  if(-d $HOME/bin)  setenv PATH $HOME/bin:$PATH&lt;br /&gt;
  &lt;br /&gt;
  # LaTeX&lt;br /&gt;
  # setenv TEXINPUTS .:~/share/latex::&lt;br /&gt;
  # setenv BIBINPUTS .:~/share/bibtex::&lt;br /&gt;
  # setenv BSTINPUTS .:~/share/bibtex/bibstyles::&lt;br /&gt;
  &lt;br /&gt;
  # Astro software&lt;br /&gt;
  source /data/system/software/softwarescript.csh&lt;br /&gt;
  source $SOFTDIR/softwarescript_Xray.csh&lt;br /&gt;
&lt;br /&gt;
The first line tells the system on which shell the script should be executed. This can be set by&lt;br /&gt;
  #!path_to_shell_binary some_options&lt;br /&gt;
Of course, the shell here is the TC-shell, located in &amp;lt;code&amp;gt;/bin/tcsh&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Prompt =&lt;br /&gt;
&lt;br /&gt;
The following block defines some specific variables: &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; defines how your prompt (the information on the left of the command line) should look like. The available place holders are defined as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| %\  || current directory  &lt;br /&gt;
|-&lt;br /&gt;
| %~  || current directory with user's home as ~ &lt;br /&gt;
|-&lt;br /&gt;
| %n  || username &lt;br /&gt;
|-&lt;br /&gt;
| %m  || hostname &lt;br /&gt;
|}&lt;br /&gt;
For the default value this results, e.g, in&lt;br /&gt;
  username@remeiscomputer:~&amp;gt;&lt;br /&gt;
You can also add the output of other commands to the prompt using `command` in the definition. The value &amp;quot;%n@%m:%\&amp;gt; &amp;quot; is equal to&lt;br /&gt;
  &amp;quot;`whoami`@`hostname -s`:`pwd`&amp;gt; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
= Default Editor =&lt;br /&gt;
&lt;br /&gt;
The (commented) line&lt;br /&gt;
  # setenv EDITOR jed&lt;br /&gt;
defines the default editor which is executed if the command &amp;lt;code&amp;gt;$EDITOR&amp;lt;/code&amp;gt; is entered. This is important for editors of [[git:start|git-repositories]], because &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; calls the in $EDITOR defined command such that the user can enter a comment describing the changes. If this variable is not set or commented, the default editor would be &amp;lt;code&amp;gt;joe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vim&amp;lt;/code&amp;gt;. They are very fast editors, but not user-friendly. To uncommment the line just remove the # at the beginning of the line.&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
	<entry>
		<id>https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals&amp;diff=1438</id>
		<title>Proposals</title>
		<link rel="alternate" type="text/html" href="https://www.sternwarte.uni-erlangen.de/wiki/index.php?title=Proposals&amp;diff=1438"/>
		<updated>2018-05-02T13:41:23Z</updated>

		<summary type="html">&lt;p&gt;Obst: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Internal]]&lt;br /&gt;
&lt;br /&gt;
===== Proposals =====&lt;br /&gt;
&lt;br /&gt;
When submitting a proposal for satellite observations usually a list of earlier __successful__ proposals is added. To make it easier to find those relevant for the individual observatory and the scientific aim of the current proposal, here is a list of proposals our group was involved in. Please include title, PI/CoIs, cycle and publications based on the observation.&lt;br /&gt;
&lt;br /&gt;
* [[intern:Proposals:Chandra | Chandra]]&lt;br /&gt;
* [[intern:Proposals:Suzaku | Suzaku]]&lt;br /&gt;
* [[intern:Proposals:XMM | XMM]]&lt;/div&gt;</summary>
		<author><name>Obst</name></author>
	</entry>
</feed>