Common Questions and Issues¶
IPython and Matplotlib¶
Many of the applications launched in an IPython
session will try and create
graphs using matplotlib
. This works well in principle, but unfortunately
requires a little bit of configuration ahead of time. Even more unfortunate is
the fact that issues rarely have tracebacks or error messages to follow.
If you are having troubles creating plots on a machine that is not your own,
the first thing to check is that you have X11 forwarding enabled. The easiest
way to do this is make sure you always log in with the ssh -X
or ssh -Y
options. You can also check the environment variable $DISPLAY
which should
return a non-empty value:
In bash:
echo $DISPLAY
or in the IPython
shell itself:
import os
print(os.getenv('DISPLAY'))
If that isn’t the issue, you should check that you have configured
matplotlib
to use Qt
as the backend for all generated plots. This is
done automatically by the hutch-python
start-up scripts, but if you are
entering an IPython
session of your own, you should configure the backend
by typing:
%matplotlib qt
Finally, if you are seeing the created plot but it doesn’t update during your
Bluesky
scan, you need to configure a kicker. This is installed in the
RunEngine
event loop that updates your plots when it isn’t busy executing
your scan. Once again, this is configured for you in the hutch_python
IPython
shell, but if you are using a basic IPython
shell, this is an
important step.
from bluesky.utils import install_kicker
install_kicker()